home *** CD-ROM | disk | FTP | other *** search
/ Lexis Nexis Millenium Plus Collection 1997 to 1997 / Lexis-Nexis Millenium Plus Collection - 1996-97 (Lexis-Nexis)(LA1173-0 07-96)(1996).bin / pc / products / mcalykt3 / payware1.inf < prev    next >
INI File  |  1996-08-13  |  125KB  |  4,178 lines

  1. DefineVariables
  2. Text [Product_ID]    ;;:= 001-0004-2-F96A
  3. Text [Product_Name] ;;:= Legal Research Guide: Patterns and Practice, Second Ed., 1990; Bonita K. Roberts, St. Mary's University School of Law; Linda L. Schlueter, Esq.
  4. Text [Version_Number] ;;:= F96A
  5. Text [Default_Program_Group] ;;:= LEXIS-NEXIS Legal Education
  6. Text [Default_Directory_Name] ;;:= \ln-edu\etm
  7. Text [Infobase_Title] ;;:= Legal Research Guide
  8. Text [Icon_Name] ;;:= Legal Research Guide
  9. Text [Infobase_File_Name] ;;:= RBRTSRW.NFO
  10. Text [Shadow_File_Name] ;;:= RBRTSRW.SDW
  11. Text [LDF_File_Name] ;;:= RBRTSRW.LDF
  12. Text [Price] ;;:= 19.95
  13. Text [Dial_Number] ;;:= 880-6947
  14. Text [Orig_Dial_Number] 
  15. Text [Support_Number] ;;:= 800-555-5555
  16. Text [Disk_Space_Required] ;;:= 0
  17.  
  18.  
  19. ;; Begin Procedure Definition Variables
  20. ;;
  21. Text [Reg_FName] := 
  22. Text [Reg_MName] := 
  23. Text [Reg_LName] := 
  24. Text [Reg_GradYear] := 
  25. Text [Reg_EMail] := 
  26. Text [Reg_Media] := 
  27. Text [Reg_CCNo] := 
  28. Text [Reg_ExpDate] := 
  29. Text [RegUpdate_Text] :=
  30. Text [Reg_IAttempt] := 
  31. Text [Reg_SchoolId] := 
  32. Text [Reg_Phone] := 
  33. Text [Reg_Zip] := 
  34. Text [Reg_State] := 
  35. Text [Reg_City] := 
  36. Text [Reg_Addr2] := 
  37. Text [Reg_Addr1] := 
  38. Text [Reg_LnId] :=
  39.  
  40. Number [Product_Number]
  41.  
  42. Text [SysFile_Sver] :=
  43. Text [SysFile_Tver] :=
  44.  
  45. Text [Screen_Option]
  46. Text [User_Id]
  47. Text [User_Time]
  48. Text [User_Date]
  49. Number [User_Install]
  50. Text [User_Version]
  51. Text [ReInstall_File]
  52. Text [ReInstall_Dir]
  53.  
  54. Number [Products_Ptr]   := 0
  55. Number [Products_End]   := 0
  56. Number [Count_Num]      := 0
  57. Text   [Products_Match] := BlankString
  58.  
  59. Number [Total_QueSize]
  60. Number [FSPC_OnDrive]
  61. Number [FSPC_Needed]
  62. Text   [FSPC_Directory]
  63. Number [FSPC_Additional]
  64.  
  65. TextArray [Files]
  66. Number    [Files_Idx]
  67.  
  68. Number [Dialog_RcMain] := 0
  69. Text   [Dialog_FullInstallRc] := 
  70.  
  71. ;; Variables: FSPChk
  72. Text      [FSPChk_Options]    :=   
  73. Text      [FSPChk_DirCheck]   :=
  74. Text      [FSPChk_DirString]  := 
  75. Text      [FSPChk_Drive]      := 
  76. Text      [FSPChk_CurrentDir] := 
  77. Number    [FSPChk_Count1]     := 0
  78. Number    [FSPChk_FreeSpace]  := 0
  79. Number    [FSPChk_QueSize]    := 0
  80. Number    [FSPChk_Required]   := 0
  81. Number    [FSPChk_Rc]         :=    
  82. Number    [FSPChk_MaxIdx]     :=
  83. Number    [FSPChk_Count]      := 
  84. TextArray [FSPChk_MsgList] 
  85. TextArray [FSPChk_Dir]         
  86.  
  87. ;; Variables: ISysFilesB
  88. Text      [ISysFileB_Str1]     := 
  89. Text      [ISysFileB_Dir]      :=
  90. Text      [ISysFileB_TDir]     := 
  91. Text      [ISysFileB_BFile]    := 
  92. Text      [ISysFileB_Str2]     := 
  93. Text      [ISysFileB_Str3]     := 
  94. Number    [ISysFileB_InUseIdx] := 0
  95. Number    [ISysFilesB_Group]   := 0
  96. Number    [ISysFileB_Num1]     := 0
  97. Number    [ISysFileB_DialogRC] := 
  98. Number    [ISysFileB_Rc]       := 0
  99. TextArray [ISysFileB_InUse] 
  100. TextArray [ISysFileB_Names] 
  101.  
  102. ;; Variables: GetGroup
  103. TextArray [GetGroup_Name] 
  104. Number    [GetGroup_Idx] := 0
  105. Text      [GetGroup_Select] := 
  106. TextArray [GetGroup_Info] 
  107. Number    [GetGroup_InfoIdx]    := 0
  108. Text      [GetGroup_InputGrp] := 
  109. Text      [GetGroup_Input] := 
  110.  
  111. ;; Variables: ReadWrt
  112. TextArray [ReadWrt_Dir]              ;; Array list of Drive/Directories to check 
  113. Text      [ReadWrt_Options]   :=     ;; <All> - Checks all known drives for Read/Write access
  114. Number    [ReadWrt_Rc]        :=     ;; 0  = All drives have Read/Write access/or selected dir
  115.                                      ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  116. TextArray [ReadWrt_DirList]          ;; TextArray of Drive/Dirs not Read/Write
  117. Number    [ReadWrt_MaxIdx]    :=
  118. Number    [ReadWrt_Count]     := 
  119. Text      [ReadWrt_DirCheck]  :=
  120. Text      [ReadWrt_DirString] :=
  121.  
  122. ;; Variables: FSPCErr
  123. Number    [FSPCERR_Rc] := 0
  124.  
  125. ;; Variables: ReadWrtErr
  126. Number    [ReadWrtErr_Rc] := 0
  127.  
  128. ;; Variables: Parse
  129. Text      [Parse_Str]      :=              
  130. Text      [Parse_Text]     :=              
  131. Text      [Parse_Char]     :=              
  132. Number    [Parse_Count]    := 0            
  133. Number    [Parse_Len]      := 0            
  134. Number    [Parse_CharLen]  := 0           
  135. Number    [Parse_Pos1]     := 0           
  136. TextArray [Parse_Tokens]                     
  137.  
  138. Number [Dialog_SysFile] := 0
  139. Text [WinDir] :=
  140. Text [PassThru_Switch] :=
  141. Text [GetIPVL_Dir] :=
  142.  
  143. Text [Invalid_Views] := BlankString
  144.  
  145. Text [StringS] := BlankString
  146. Text [Product_Version] := 
  147. Text [Product_CompanyName] := 
  148. Text [Product_DefaultGrp] := Lexis-Nexis
  149. Text [Product_DefaultDir] := C:\LNWin
  150. Text [System_StartTime] := 
  151. Text [System_CMDLine] := 
  152. Text [System_TempDir] := 
  153. Text [System_InstallType] :=
  154.  
  155. Text [PassThru_Switch1] :=
  156. TextArray [Product_List] 
  157. TextArray [Product_LstName] 
  158. TextArray [Product_LstSize] 
  159.  
  160. Number [Product_CB] := 0
  161. Number [Product_CB1] := 0
  162. TextArray [Product_LstCMDL] 
  163. Number [Product_Cnt1] := 0
  164.  
  165. TextArray [Schools_List] 
  166. Number    [Schools_Total] := 0
  167. Text [KBytes]
  168. Number    [Schools_Cnt1] := 0
  169. Text      [Schools_Text] := 
  170. Text      [Schools_Name] :=
  171.  
  172.  
  173. Number [Dialog_Rc] := 0
  174. Text [GetIdir_IDir] := 
  175. Number [GetIDir_TQueSize] := 0
  176. Number [UniSys311_Rc] := 0
  177. Text [GetGroup_DefaultGrp] := 
  178. TextArray [InUse_FileName] 
  179. Text [TViewsDir] :=
  180.  
  181. TextArray [InUse_BackUpN] 
  182. TextArray [InUse_AppName] 
  183. Number [InUse_RC] := 0
  184. Text [ISysFileB_LogFile] := 
  185. Text [IICons_Group] := 
  186. TextArray [Views31Dirs] 
  187. Text [Views31IDir] := 
  188. Text [ScanIcons_ExePath] := 
  189. Text [ScanIcons_Text] := 
  190. Text [ScanIcons_Directory] :=
  191. Text [Disk_Space_sRequired] := 
  192. Text [Text_1] :=
  193. Number [GradYear_Beg] := 0
  194. Number [GradYear_End] := 0
  195. TextArray [GradYear_List] 
  196. Number [Reg_OSFRb] := 
  197. Number [Reg_NumOSFRb] := 0
  198.  
  199. Text [StrCheck_String] := 
  200. Text [StrCheck_Valid] := 
  201. Number [StrCheck_Cnt] := 0
  202. Number [StrCheck_Rc] := 0
  203. Text [StrCheck_Char] := 
  204. Number [StrCheck_Chk] := 0
  205. Text [StrCheck_Mask] := 
  206. Number [StrCheck_Len] := 0
  207. Number [RegUser_Count] := 0
  208. TextArray [RegUser_Data] 
  209. Number [RegUser_Idx] := 0
  210. Number [Schools_AddCnt] := 0
  211. Text [RegUser1_Back] := 
  212. Text [ByeBye_Desc] :=
  213. Text [ByeBye_Desc1] :=
  214. Number [Reg_CBLawReview] := 
  215. Number [Reg_CBLawReview1] := 
  216. Text [RegH_Addr1] := 
  217. Text [RegH_Addr2] := 
  218. Text [RegH_City] := 
  219. Text [RegH_State] := 
  220. Text [RegH_Zip] := 
  221. Text [RegH_Phone] :=
  222.  
  223. Text [Field_Error] := False
  224.  
  225. Text [TRegH_Addr1] :=
  226. Text [TRegH_Addr2] :=
  227. Text [TRegH_City] :=
  228. Text [TRegH_State] :=
  229. Text [TRegH_Zip] :=
  230. Text [TRegH_Phone] :=
  231.  
  232. Number [Last_Reg_CBLawReview] := 0
  233. Number [Last_Reg_CBLawReview1] := 0
  234. Text [Last_Reg_GradYear] := 
  235. Number [Credit_Rc] := 0
  236. Text [Student_Info] :=
  237. Text [Str1] := 
  238. Text [Str2] :=
  239. Number [S_Count] := 0
  240. Text [S_Text] :=
  241. Number [Call_Rc] := 0
  242. Text [Reg_Member] := 
  243. Text [Reg_InstallOS] := 
  244. Text [Reg_SoftwareVer] := 
  245. Text [Reg_ProductId] := 
  246. Text [TS_text] :=
  247. Text [Err_Desc] := 
  248. Text [Err_Text] :=
  249. Number [Dll_LdError] := 0
  250. Number [LdError] := 0
  251. Text [Exp_Month] := 
  252. TextArray [Exp_MonthLst] 
  253. TextArray [Exp_YearLst] 
  254. Text [Exp_Year] :=
  255. Text [Product_File] := 
  256. Number [L_Check] := 0
  257. Text [T_Desc] := 
  258. Text [CC_Text] := 
  259. Text [PI_Text] := 
  260. Text [Ist_Text] := 
  261. Text [Reg_DialPrefix] :=
  262. Number [Start_Err] := 0
  263. Text [Reg_SchoolIdX] :=
  264. Text [Price_Desc] := 
  265. Text [Price_Total] :=
  266. Text [Price_Return] := 
  267. Text [Dial_Prefix] :=
  268. Text [Reg_CBLawReview1Yn] := 
  269. Text [Reg_CBLawReviewYn] :=
  270. Text [Reg_CBLawReviewYn1] := 
  271. Text [C_Dir] := 
  272. Text [T_Dir] :=
  273. Number [KeySize] := 0
  274. Number [Error] := 0
  275. Text [Cat_Select] :=
  276. Number [BStr_Count] := 0
  277. Text [CMD_Line] :=
  278. Text [Rest_Attempt] := 
  279. Text [Rest_Media] := 
  280. Text [Rest_DLoad] := 
  281. Text [Rest_IDir] := 
  282. Text [Rest_Prod] := 
  283. Number [Restart_Type] := 0
  284. Text [FPFile_CurDrive] := 
  285. Number [SSkip] := 0
  286. TextArray [FPFile_Dirs]
  287. EndDefineVariables
  288. Procedure SetUp
  289. ;;***************************************************************************
  290. ;; SetUp - Intializes instalit windows/colors/Ques support files into ShadowDirectory
  291. ;;
  292. ;; HPI - Leading the world in installation technology
  293. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  294. ;; From the HPI script library 10/01/95 - CNH
  295. ;; ---------------------------------------------------------------------------------------------------------------
  296. ;; Description: SetUp 
  297. ;; The main function of setup is to properly intialize the system
  298. ;; for script execution. This includes the loading of bitmaps into
  299. ;; the shadowdirectory. 
  300. ;;
  301. ;; Compatiability: SetUp
  302. ;; Windows, Win95, NT installers only ! 
  303. ;;
  304. ;; Calling Convention: SetUp
  305. ;; Do SetUp     
  306. ;;
  307. ;; Return Codes: SetUp
  308. ;; None
  309. ;;
  310. ;; Variables: SetUp
  311. ;; As Required
  312. ;;
  313. ;;***************************************************************************
  314.  
  315. SetBackGroundColor 0 0 255 0 0 0
  316. SetReadOnlyInquiry Off 
  317. SetReplacementInquiry Off
  318. SetDefaultBitMap Off
  319. ShowWindow Maximize
  320.  
  321. SetMouseCursor Wait
  322.  
  323. ;; All installation support files and bitmaps to temp dir
  324. ;;
  325. :SetUp_QueFiles
  326. ;;If FileExists [WindowsDirectory]\LNForms.Dat
  327. ;;   ExamineTextFile [WindowsDirectory]\LNForms.Dat
  328. ;;     [Rest_Attempt] := SettingFor IAttempt
  329. ;;     [Rest_Media]   := SettingFor Media
  330. ;;     [Rest_DLoad]   := SettingFor DownLoad
  331. ;;     [Rest_IDir]    := SettingFor IDir
  332. ;;     [Rest_Prod]    := SettingFor PVL
  333. ;;   ForgetTextFile
  334. ;;   If [Rest_Attempt] = F .And. [Rest_Media] = D .And. [Rest_DLoad] = Y
  335. ;;      Do ReStart
  336. ;;   EndIf  
  337. ;;EndIf
  338.  
  339. [Number1] := SizeOfGroup 10
  340. If [Number1] = 0
  341.    ;; Common dialog to an existing PVL
  342. EndIf
  343.  
  344. QueFileGroup 10 to ShadowDirectory
  345. ;; Init vars from Cmdline parameters
  346. ;;
  347. ;; -P:Product name   ;; Info base file name
  348. ;; Must be last parameter on command line
  349. ;;
  350. [Number1] := PositionOf "-P:" In [System_CMDLine]
  351. If [Number1] > 0
  352.    [Number1] := [Number1] + 3
  353.    [String12] := SubStringOf [System_CMDLine] From [Number1] To End
  354.    [Number1] := PositionOf " " In [String12]
  355.    If [Number1] > 0 
  356.       DecrementNumber [Number1]
  357.       [String2] := SubStringOf [String12] From 1 To [Number1]
  358.      Else
  359.       [String2] := [String12]
  360.    EndIf
  361.    [String1] := [String2].
  362.    [CMD_Line] := Yes
  363.    [Reg_Media] := D
  364.  
  365.   Else
  366.    ;; Which product to install
  367.    ClearArray [Array1] 
  368.    [Array1] := FileListFromLibrary *.NFO
  369.    [Number1] := LastindexUsedFor [Array1]
  370.  
  371.    If [Number1] = 0    
  372.       [Product_File] := Not Selected
  373.       Do NoProducts
  374.      Else
  375.       [String1] := [Array1][1]
  376.    EndIf
  377.  
  378. EndIf
  379.  
  380. :Check_Idd
  381. SetTokenDelimiterTo .
  382. [Product_File] := Token 1 Of [String1]
  383.  
  384. If FileIsInLibrary [Product_File].IDD
  385.   Else     
  386.     Do NoProducts
  387.     Goto Check_Idd
  388. EndIf
  389.  
  390. ;;PopUp  [Product_File].IDD
  391.  
  392. QueFiles To ShadowDirectory
  393.   [Product_File].IDD
  394. EndQueFiles
  395.  
  396. ;; Check for FreeSpaceOnDrive 
  397. ClearArray [FSPChk_Dir]             ;; Clear old Array contents
  398. [FSPChk_Dir][1]  := ShadowDirectory ;; Drive/Directory to check 
  399. [FSPChk_Options] := BlankString     ;; <All> - Checks all drives for required freespace.
  400. Do FSPChk                           ;; <BlankString> - Checks for required freespace on a specified drive.
  401.  
  402. ;; Return Codes: FSPChk
  403. ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  404. ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  405. ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  406.  
  407. Do FSPCErr
  408. If [FSPCErr_Rc] = 300 
  409.    SoLong Quietly
  410. EndIf
  411.  
  412. If [FSPCErr_Rc] = 100
  413.    UnQueAllFiles   
  414.    Goto SetUp_QueFiles
  415. EndIf
  416.  
  417. :SetUp_ReadWrt
  418. ;; Calling Convention: ReadWrt
  419. [ReadWrt_Dir][1]  := ShadowDirectory ;; Drive/Directory to check 
  420. [ReadWrt_Options] := BlankString     ;; <BlankString> - Use if no option specified
  421.                                      ;; <All> - Checks all known drives for Read/Write access
  422. Do ReadWrt                           ;; Checks for required freespace on a specified drive.
  423.  
  424. ;; Return Codes:
  425. ;; [ReadWrt_Rc]         :=     ;; 0  = All drives have Read/Write access/or selected dir
  426. ;;                             ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  427. ;; [ReadWrt_DirList][X] :=     ;; TextArray of Drive/Dirs not Read/Write
  428.  
  429. Do ReadWrtErr
  430. If [ReadWrtErr_Rc] = 300 
  431.    SoLong Quietly
  432. EndIf
  433.  
  434. If [ReadWrtErr_Rc] = 100
  435.    Goto SetUp_ReadWrt
  436. EndIf
  437.  
  438. GetQuedFiles Quietly
  439.  
  440. ;; Display splash bitmap
  441. ;;
  442. LoadBitMap 15 ShadowDirectory\LexNex.Bmp LexNex1.Bmp
  443. ShowBitMap 15 @xy(1,1)
  444. UpdateWindow
  445.  
  446. ;; Load dialog bitmap
  447. ;;
  448. LoadBitMap 14 ShadowDirectory\etm.Bmp
  449.  
  450. ;;ShowBitMap 14 @xy(1,1)
  451. ;;PopUp Hold...
  452.  
  453. SetBackGroundModeTo Transparent
  454. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  455.  
  456. [Number1] := SizeOfGroup 100
  457. If [Number1] > 0 .And. [Reg_Media] = BlankString
  458.    If DriveIsCdrom [InstallFromDrive]
  459.       [Reg_Media] := C
  460.      Else
  461.       [Reg_Media] := F
  462.    EndIf
  463.   Else
  464.    [Reg_Media] := D
  465. EndIf
  466.  
  467. ;;PopUp [Reg_Media]
  468.  
  469. ExamineTextFile ShadowDirectory\[Product_File].IDD
  470. [Product_ID] := SettingFor Product ID
  471. [Product_Name] := SettingFor Product Name
  472. [Version_Number] := SettingFor Version Number
  473. [Default_Program_Group] := SettingFor Default Program Group
  474. [Default_Directory_Name] := SettingFor Default Directory Name
  475. [Infobase_Title] := SettingFor Infobase Title
  476. [Icon_Name] := SettingFor Icon Name
  477. [Infobase_File_Name] := SettingFor Infobase File Name
  478. [Shadow_File_Name] := SettingFor Shadow File Name
  479. [LDF_File_Name] := SettingFor LDF File Name
  480. [Price] := SettingFor Price
  481. [Dial_Number] := SettingFor Dial Number
  482. [Support_Number] := SettingFor Support Number
  483. [Disk_Space_Required] := SettingFor Disk Space Required
  484. ForgetTextFile
  485.  
  486. [Orig_Dial_Number] := [Dial_Number]
  487.  
  488. DeleteFiles From ShadowDirectory Quietly
  489.  [Product_File].IDD
  490. EndDeleteFiles
  491.  
  492. [Number20] := PositionOf "/" In [Default_Directory_Name]
  493. If [Number20] > 0
  494. [Parse_Str] := [Default_Directory_Name]
  495. [Parse_Char] := "/"
  496. Do Parse
  497.  
  498. [Number1] := 1
  499. [Number2] := [Parse_Count]
  500. [String1] := [Parse_Tokens][[Number1]]
  501. While [Number1] < [Number2]
  502.   IncrementNumber [Number1]
  503.   [String1] := [String1]\[Parse_Tokens][[Number1]]
  504. EndWhile
  505. [Default_Directory_Name] := \ln-edu    ;;[String1]
  506. EndIf
  507.  
  508. ;; Get Diskspace requirements
  509. ;;
  510. If [Reg_Media] = D
  511.    [Number1] := [Disk_Space_Required]
  512.    [Number2] := [Number1] / 2
  513.    [Number3] := [Number1] + [Number2]
  514.    [Disk_Space_Required] := [Number3]
  515. EndIf
  516.  
  517. ;;PopUp [Disk_Space_Required]
  518. ;;If [Disk_Space_Required] = 0 
  519. ;;   Do QueInstallFiles
  520. ;;   [Disk_Space_Required] := QueSize 
  521. ;;   UnQueAllFiles
  522. ;;   [Disk_Space_sRequired] := FormatNumber [Disk_Space_Required]
  523. ;;   [Number9] := [Disk_Space_Required] / 1000
  524. ;;   if [Number9] = 0 then 
  525. ;;        [KBytes] := <Unknown>
  526. ;;   else
  527. [Number9] := [Disk_Space_Required] / 1024
  528. [KBytes] := FormatNumber [Number9]
  529. ;;   EndIf
  530. ;;EndIf
  531.  
  532. SetCopyAttrTo 00
  533. CopyFiles From [InstallFromDirectory] To ShadowDirectory Quietly
  534. ZClient.Dll
  535. EndCopyFiles
  536.  
  537. EndProcedure
  538.  
  539.  
  540. Procedure ByeBye
  541. ;;***************************************************************************
  542. ;;
  543. ;; Installation Exit Procedure
  544. ;;
  545. ;;***************************************************************************
  546. ;;Do ClearBmps
  547.  
  548. SetMouseCursor Arrow
  549.  
  550. [Reg_IAttempt] := S
  551.  
  552. ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp Quietly
  553.   AddOrChangeLineWith (IAttempt=,,) As "IAttempt=[Reg_IAttempt]" At End
  554. EndModifyTextFile
  555.  
  556.  
  557. ClearScreen
  558. :Exit
  559. [ByeBye_Desc] := '[Infobase_Title]' has been successfully installed to '[InstallationDirectory]'. You may execute '[Product_Name]' from the program group '[IICons_Group]' by clicking the icon titled '[Icon_Name]'.
  560.  
  561. DialogBox  @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader " Installation Complete "  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  562.   Font "MS Sans Serif" 8
  563.   BitMap @xy(8,7) BitMap 14
  564.   LText @xy(83,7) 197 90 "[ByeBye_Desc]"
  565.   
  566.   PushButton @xy(230,145) 45 15 "Finish" 200
  567.   Static @xy(8,140) 269 1 "" BlackRect
  568. EndDialogBox
  569.  
  570. SoLong Quietly
  571.  
  572.  
  573. EndProcedure
  574. Procedure Parse
  575.  
  576. ;; Initialize Parse variables
  577. ClearArray [Parse_Tokens]
  578. [Parse_Count] := 0
  579. [Parse_Len] := LengthOf [Parse_Str]
  580. [Parse_Text] := [Parse_Str]
  581.  
  582. ;; Parse CharLen must be properly set to handle single of multi character
  583. ;; parse strings.
  584. [Parse_CharLen] := LengthOf [Parse_Char]
  585. IncrementNumber [Parse_CharLen] 
  586.  
  587. ;; Check text for parse characters
  588. :Parse_CheckTokens
  589. [Parse_Pos1] := PositionOf [Parse_Char] In [Parse_Text]
  590.  
  591. ;; Extract token and place in [Parse_Tokens] array
  592. If [Parse_Pos1] > 1
  593.    DecrementNumber [Parse_Pos1]
  594.    [String1] := SubStringOf [Parse_Text] From 1 to [Parse_Pos1]
  595.    IncrementNumber [Parse_Count]
  596.    [Parse_Tokens][[Parse_Count]] := [String1]
  597.    [Parse_Pos1] := [Parse_Pos1] + [Parse_CharLen]
  598.    [Parse_Text] := SubStringOf [Parse_Text] From [Parse_Pos1] To End
  599.    Goto Parse_CheckTokens
  600. EndIf
  601.  
  602. ;; A parse character in the first string position indicates
  603. ;; a null Token
  604. If [Parse_Pos1] = 1
  605.    [Number1] := LengthOf [Parse_Text]
  606.    IncrementNumber [Parse_Count]
  607.    [Parse_Tokens][[Parse_Count]] := BlankString
  608.    [Parse_Pos1] := [Parse_Pos1] + [Parse_CharLen]
  609.    DecrementNumber [Parse_Pos1]
  610.    [Parse_Text] := SubStringOf [Parse_Text] From [Parse_Pos1] To End
  611.    Goto Parse_CheckTokens
  612. EndIf
  613.  
  614. ;; Always set [Parse_Count] according the number of
  615. ;; tokens parsed, could possibly zero.
  616. [Parse_Count] := LastIndexUsedFor [Parse_Tokens]
  617. If [Parse_Count] = 0
  618.    ClearArray [Parse_Tokens]
  619.    Exit
  620. EndIf
  621.  
  622. ;; If some tokens were parsed, check string for trailing
  623. ;; tokens and to [Parse_Tokens] array.
  624. If [Parse_Pos1] = 0
  625.    [Number1] := LengthOf [Parse_Text] 
  626.    If [Number1] > 0
  627.      IncrementNumber [Parse_Count]
  628.      [Parse_Tokens][[Parse_Count]] := [Parse_Text]
  629.    EndIf
  630. EndIf
  631.  
  632.  
  633.  
  634.  
  635.  
  636. EndProcedure
  637. Procedure FSPChk
  638. ;;***************************************************************************
  639. ;; FSPChk - Checks all Drives/Dirs freespace against QueSize  
  640. ;;
  641. ;; HPI - Leading the world in installation technology
  642. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  643. ;; From the HPI script library 09/25/95 - CNH
  644. ;; ---------------------------------------------------------------------------------------------------------------
  645. ;; Description: FSPChk 
  646. ;; Uses the Instalit function 'QueSizeForDrive' to determine if sufficent
  647. ;; free space is available on one or more drives. FSPChk will perform 
  648. ;; free space detection with a list of specified drives or directories,
  649. ;; or by using the 'All' option will automatically check all drives that
  650. ;; have files targeted for installation. FSPChk will return an array with
  651. ;; message information for any drives that fail free space requirements.
  652. ;;
  653. ;; Compatiability: FSPChk
  654. ;; Windows, Win95, NT installers only ! 
  655. ;;
  656. ;; Calling Convention: FSPChk
  657. ;; [FSPChk_Dir][X]  :=               ;; Drive/Directory to check 
  658. ;; [FSPChk_Options] := BlankString   ;; <BlankString> - Checks specified dirs for FreeSpace
  659. ;;                                   ;; <All> - OverRides specified dirs and checks Quesize
  660. ;;                                              for all targeted drives.
  661. ;; Do FSPChk                         ;; Checks for required freespace on a specified drive.
  662. ;;
  663. ;; Return Codes: FSPChk
  664. ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  665. ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  666. ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  667. ;;
  668. ;; The array message format for [FSPChk_MsgList] is: 
  669. ;;
  670. ;; Drive_Letter: (nnnnnnbytes Qued) (nnnnnnbytes Free) (nnnnnnbytes required)
  671. ;; {QueSize} ----------^          
  672. ;; {Free Space on Drive} --------------------^
  673. ;; {Free Space Bytes Required to continue} ------------------------^
  674. ;;
  675. ;; Variables: FSPChk
  676. ;;              Text      [FSPChk_Options]    :=     
  677. ;;              Text      [FSPChk_DirCheck]   :=
  678. ;;              Text      [FSPChk_DirString]  := 
  679. ;;              Text      [FSPChk_Drive]      := 
  680. ;;              Text      [FSPChk_CurrentDir] := 
  681. ;;              Number    [FSPChk_Count1]     := 0
  682. ;;              Number    [FSPChk_FreeSpace]  := 0
  683. ;;              Number    [FSPChk_QueSize]    := 0
  684. ;;              Number    [FSPChk_Required]   := 0
  685. ;;              Number    [FSPChk_Rc]         :=     
  686. ;;              Number    [FSPChk_MaxIdx]     :=
  687. ;;              Number    [FSPChk_Count]      := 
  688. ;;              TextArray [FSPChk_MsgList] 
  689. ;;              TextArray [FSPChk_Dir]             
  690. ;;
  691. ;;***************************************************************************
  692.  
  693. [FSPChk_Count] := PositionOf All In [FSPChk_Options]
  694. If [FSPChk_Count] > 0
  695. ;; Option All
  696. [FSPChk_DirString] := B
  697. [FSPChk_Count]     := 0
  698. [FSPChk_Rc]        := 0
  699.  
  700. ClearArray [FSPChk_Dir]
  701. [FSPChk_MaxIdx] := LastIndexUsedFor [FSPChk_Dir]
  702.  
  703. While [FSPChk_DirString] < Z
  704.  IncrementString [FSPChk_DirString] 
  705.  
  706.  If DriveIsPresent [FSPChk_DirString]:\
  707.     If QueSizeForDrive [FSPChk_DirString] > 0   
  708.        IncrementNumber [FSPChk_MaxIdx]
  709.        [FSPChk_Dir][[FSPChk_MaxIdx]] := [FSPChk_DirString]:\
  710.     EndIf
  711.  EndIf
  712. EndWhile
  713.  
  714. EndIf
  715.  
  716. ;; Initialize Variables
  717. [FSPChk_MaxIdx] := LastIndexUsedFor [FSPChk_Dir]
  718. [FSPChk_Count]  := 0
  719. ClearArray [FSPChk_MsgList]
  720.  
  721. If [FSPChk_MaxIdx] = 0
  722.    Exit
  723. EndIf
  724.  
  725. While [FSPChk_Count] < [FSPChk_MaxIdx]
  726.  IncrementNumber [FSPChk_Count] 
  727.  [FSPChk_Drive]     := [FSPChk_Dir][[FSPChk_Count]]
  728.  
  729.  [FSPChk_DirCheck]  := SubStringOf [FSPChk_Drive] From 1 To 2
  730.  
  731.  [FSPChk_FreeSpace] := FreeSpaceOnDrive [FSPChk_DirCheck]
  732.  [FSPChk_QueSize]   := QueSizeForDrive [FSPChk_DirCheck]
  733.  [FSPChk_Required]  := [FSPChk_QueSize] - [FSPChk_FreeSpace]
  734.  
  735.  If [FSPChk_Required] < 0 
  736.    Else
  737.      [FSPChk_Count1] := 0 
  738.      While [FSPChk_Count1] < [FSPChk_Rc]
  739.        IncrementNumber [FSPChk_Count1]
  740.        [FSPChk_CurrentDir] := [FSPChk_MsgList][[FSPChk_Count1]]  
  741.        [FSPChk_Drive] := SubStringOf [FSPChk_CurrentDir] From 1 To 2
  742.                
  743.        If [FSPChk_DirCheck] = [FSPChk_Drive]
  744.           Goto FSPChk_Dir
  745.        EndIf
  746.      EndWhile
  747.  
  748.     IncrementNumber [FSPChk_Rc] 
  749.     [FSPChk_MsgList][[FSPChk_Rc]] := [FSPChk_DirCheck] ([FSPChk_FreeSpace] Free) ([FSPChk_Required] Additional bytes required)
  750.  
  751.  EndIf
  752.  
  753. :FSPChk_Dir
  754.  
  755. EndWhile
  756.  
  757.  
  758.  
  759. EndProcedure
  760. Procedure ReadWrt
  761. ;;***************************************************************************
  762. ;; ReadWrt - Checks for Read/Write Access on a drive/drives or directories 
  763. ;;
  764. ;; HPI - Leading the world in installation technology
  765. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  766. ;; From the HPI script library 09/25/95 - CNH
  767. ;; ---------------------------------------------------------------------------------------------------------------
  768. ;; Description: ReadWrt 
  769. ;; Uses an array list to check one or more Directories for R/w access.
  770. ;; The <All> option can be used to scan all drives present. If the <ALL>
  771. ;; option is specified, any directories specified are ignored. ReadWrt
  772. ;; returns an array called [ReadWrt_DirList], and sets [ReadWrt_Rc] to
  773. ;; the number of invalid Drives/Directories found on the system.   
  774. ;;
  775. ;; Compatiability: ReadWrt
  776. ;; Windows, NT installers only ! 
  777. ;;
  778. ;; Calling Convention: ReadWrt
  779. ;; [ReadWrt_Dir][X]  :=               ;; Drive/Directory to check 
  780. ;; [ReadWrt_Options] := BlankString   ;; <BlankString> - Use if no option specified
  781. ;;                                    ;; <All> - Checks all known drives for Read/Write access
  782. ;; Do ReadWrt                         ;; Checks for required freespace on a specified drive.
  783. ;;
  784. ;; Return Codes:
  785. ;; [ReadWrt_Rc]         :=     ;; 0  = All drives have Read/Write access/or selected dir
  786. ;;                             ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  787. ;; [ReadWrt_DirList][X] :=     ;; TextArray of Drive/Dirs not Read/Write
  788. ;;
  789. ;; Variables:
  790. ;; TextArray [ReadWrt_Dir]             ;; Array list of Drive/Directories to check 
  791. ;; Text      [ReadWrt_Options]  :=     ;; <All> - Checks all known drives for Read/Write access
  792. ;; Number    [ReadWrt_Rc]       :=     ;; 0  = All drives have Read/Write access/or selected dir
  793. ;;                                     ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  794. ;; TextArray [ReadWrt_DirList]  :=     ;; TextArray of Drive/Dirs not Read/Write
  795. ;; Number    [ReadWrt_MaxIdx]   :=
  796. ;; Number    [ReadWrt_Count]    := 
  797. ;; Text      [ReadWrt_DirCheck] := 
  798. ;; 
  799. ;;***************************************************************************
  800. [ReadWrt_Count] := PositionOf TargetOnly In [ReadWrt_Options]
  801. If [ReadWrt_Count] > 0
  802. ;; Option All
  803. [ReadWrt_DirString] := B
  804. [ReadWrt_Count]     := 0
  805. [ReadWrt_Rc]        := 0
  806. ClearArray [ReadWrt_DirList] 
  807.  
  808. While [ReadWrt_DirString] < Z
  809.  IncrementString [ReadWrt_DirString] 
  810.  
  811.  If QueSizeForDrive [ReadWrt_DirString] > 0
  812.     If DirectoryAllowable [ReadWrt_DirString]:\
  813.       Else
  814.        IncrementNumber [ReadWrt_Rc]
  815.        [ReadWrt_DirList][[ReadWrt_Rc]] := [ReadWrt_DirString]:\
  816.     EndIf
  817.  EndIf
  818. EndWhile
  819.  
  820. Exit
  821. EndIf
  822.  
  823. [ReadWrt_Count] := PositionOf All In [ReadWrt_Options]
  824. If [ReadWrt_Count] > 0
  825. ;; Option All
  826. [ReadWrt_DirString] := B
  827. [ReadWrt_Count]     := 0
  828. [ReadWrt_Rc]        := 0
  829. ClearArray [ReadWrt_DirList] 
  830.  
  831. While [ReadWrt_DirString] < Z
  832.  IncrementString [ReadWrt_DirString] 
  833.  
  834.  If DriveIsPresent [ReadWrt_DirString]:\
  835.     If DirectoryAllowable [ReadWrt_DirString]:\
  836.       Else
  837.        IncrementNumber [ReadWrt_Rc]
  838.        [ReadWrt_DirList][[ReadWrt_Rc]] := [ReadWrt_DirString]:\
  839.     EndIf
  840.  EndIf
  841. EndWhile
  842.  
  843. Exit
  844. EndIf
  845.  
  846. :ReadWrt_Check
  847. ;; Initialize Variables
  848. [ReadWrt_MaxIdx] := LastIndexUsedFor [ReadWrt_Dir]
  849. [ReadWrt_Count]  := 0
  850. ClearArray [ReadWrt_DirList]
  851.  
  852. ;; Check selected directories for Read/Write access
  853. While [ReadWrt_Count] < [ReadWrt_MaxIdx]
  854.  IncrementNumber [ReadWrt_Count] 
  855.  [ReadWrt_DirCheck] := [ReadWrt_Dir][[ReadWrt_Count]]
  856.  
  857.  If DirectoryAllowable [ReadWrt_DirCheck]
  858.    Else
  859.     IncrementNumber [ReadWrt_Rc]
  860.     [ReadWrt_DirList][[ReadWrt_Rc]] := [ReadWrt_DirCheck]
  861.  EndIf
  862.  
  863. EndWhile
  864.  
  865. EndProcedure
  866. Procedure FSPCERR
  867.  
  868.  
  869.  
  870. ;;***************************************************************************
  871. ;; FSPCErr - Displays an error dialog if FSPChk returns an error via [FSPChk_Rc]
  872. ;;
  873. ;; HPI - Leading the world in installation technology
  874. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  875. ;; From the HPI script library 09/25/95 - CNH
  876. ;; ---------------------------------------------------------------------------------------------------------------
  877. ;; Description: FSPCErr 
  878. ;; FSPCErr is called immediately following the FSPChk procedure. 
  879. ;; If [FSPChk_Rc] is greater than zero, then FSPCErr will display
  880. ;; an error dialog with the required information informing the 
  881. ;; user that the installation directory has insufficient space 
  882. ;; for product installation.
  883. ;;
  884. ;; Compatiability: FSPCErr
  885. ;; Windows, Win95, NT installers only ! 
  886. ;;
  887. ;; Requires: FSPCErr
  888. ;; Procedure  - FSPChk
  889. ;;
  890. ;; Calling Convention: FSPCErr
  891. ;; Do FSPCErr                         ;; Checks to see if FSPChk has detected a freespace error
  892. ;;
  893. ;; Return Codes: FSPCErr
  894. ;; If [FSPCErr_Rc] = 300              ;; User selected 'Cancel'  
  895. ;;    Do ExitConfirm
  896. ;; EndIf
  897. ;;
  898. ;; If [FSPCErr_Rc] = 100              ;; User selected 'Re-Try'
  899. ;;    UnQueAllFiles   
  900. ;;    Goto SetUp_QueFiles
  901. ;; EndIf
  902. ;;
  903. ;; Variables: FSPCErr
  904. ;; Number    [FSPCErr_Rc] 
  905. ;;***************************************************************************
  906. [FSPCErr_Rc] := 0
  907.  
  908. If [FSPChk_Rc] > 0
  909.    ClearScreen
  910.    HideBitMap 13
  911.    Delay 1   
  912.  
  913.    [Number25] := RGB(0,0,0)           ;;custom foreground color
  914.    [Number26] := RGB(192,192,192)     ;;custom background color
  915.  
  916.    UpdateWindow
  917.  
  918.    DialogBox  @xy(center,80) 284 165 Returns [FSPCERR_Rc] BlackOnLightGray UseHeader " Insufficient Free Space "  
  919.       Font "MS Sans Serif" 8
  920.       LText   @xy(84,7)  191 24 "Additional free space is required to continue installation. Please free up the required free space bytes and retry the installation."
  921.       LText   @xy(84,37) 191 24 "Please see your 'Windows 3.1 File Manager' or 'Windows 95 Explorer' to delete any unneeded files to continue installation."
  922.       LText   @xy(84,67) 191 23 "The following drive(s) have insufficient free space to continue installation."
  923.       ListBox @xy(84,87) 191 33 Uses [String1] LoadWith [FSPChk_MsgList] Border 
  924.       LText @xy(8,145) 120 16 "⌐ 1996 Emanuel Law Outlines, Inc."
  925.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  926.       PushButton @xy(135,145) 45 15 "< Retry" 100 
  927.       PushButton @xy(232,145)  45 15 "Cancel" 300
  928.       Static @xy(8,140) 269 1 "" BlackRect
  929.    EndDialogBox
  930.  
  931.    If [FSPCERR_Rc] = 300
  932.       SoLong Quietly
  933.    EndIf
  934.  
  935. EndIf
  936.  
  937. EndProcedure
  938. Procedure ReadWrtErr
  939. ;;***************************************************************************
  940. ;; ReadWrtErr - Displays an error dialog if ReadWrtCHk returns an error via [ReadWrtChk_Rc]
  941. ;;
  942. ;; HPI - Leading the world in installation technology
  943. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  944. ;; From the HPI script library 09/25/95 - CNH
  945. ;; ---------------------------------------------------------------------------------------------------------------
  946. ;; Description: ReadWrtErr 
  947. ;; ReadWrtErr is called immediately following the ReadWrtChk procedure. 
  948. ;; If [ReadWrtChk_Rc] is greater than zero, then ReadWrtErr will display
  949. ;; an error dialog with the required information informing the 
  950. ;; user that the installation directory has insufficient space 
  951. ;; for product installation.
  952. ;;
  953. ;; Compatiability: ReadWrtErr
  954. ;; Windows, Win95, NT installers only ! 
  955. ;;
  956. ;; Requires: ReadWrtErr
  957. ;; Procedure  - ReadWrtChk
  958. ;;
  959. ;; Calling Convention: ReadWrtErr
  960. ;; Do ReadWrtErr                         ;; Checks to see if ReadWrtChk has detected a freespace error
  961. ;;
  962. ;; Return Codes: ReadWrtErr
  963. ;; If [ReadWrtErr_Rc] = 300              ;; User selected 'Cancel'  
  964. ;;    Do ExitConfirm
  965. ;; EndIf
  966. ;;
  967. ;; If [ReadWrtErr_Rc] = 100              ;; User selected 'Re-Try'
  968. ;;    UnQueAllFiles   
  969. ;;    Goto SetUp_QueFiles
  970. ;; EndIf
  971. ;;
  972. ;; Variables: ReadWrtErr
  973. ;; Number    [ReadWrtErr_Rc] 
  974. ;;***************************************************************************
  975.  
  976. If [ReadWrt_Rc] > 0
  977.    ClearScreen
  978.    HideBitMap 13   
  979.  
  980.    [Number25] := RGB(0,0,0)           ;;custom foreground color
  981.    [Number26] := RGB(192,192,192)     ;;custom background color
  982.  
  983.    If FileExists ShadowDirectory\etm.bmp
  984.       LoadBitMap 14 ShadowDirectory\etm.bmp
  985.  
  986.      UpdateWindow
  987.     
  988.    DialogBox  @xy(center,80) 284 165 Returns [ReadWrtErr_Rc] BlackOnLightGray UseHeader " Directory Access Denied " 
  989.       Font "MS Sans Serif" 8
  990.       BitMap @xy(8,8) BitMap 14
  991.       LText   @xy(84,7)  191 44 "During installation one or more directories did not have adequate Read/Write privileges. Read/Write access will be required for the specified directories as listed below before continuing installation."
  992.       LText   @xy(84,47) 191 24 "Please see your systems administrator concerning access privileges."
  993.       LText   @xy(84,77) 191 23 "The following directories do not have Read/Write access or are invalid."
  994.       ListBox @xy(84,97) 191 33 Uses [String1] LoadWith [ReadWrt_DirList] Border
  995.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  996.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  997.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  998.       Static @xy(8,140) 269 1 "" BlackRect
  999.     EndDialogBox
  1000.  
  1001.    Else
  1002.     
  1003.    UpdateWindow
  1004.     
  1005.    DialogBox  @xy(center,80) 284 165 Returns [ReadWrtErr_Rc] BlackOnLightGray UseHeader " Directory Access Denied " 
  1006.       Font "MS Sans Serif" 8
  1007.       LText   @xy(84,7)  191 44 "During installation one or more directories did not have adequate Read/Write privileges. Read/Write access will be required for the specified directories as listed below before continuing installation."
  1008.       LText   @xy(84,47) 191 24 "Please see your systems administrator concerning access privileges."
  1009.       LText   @xy(84,77) 191 23 "The following directories do not have Read/Write access or are invalid."
  1010.       ListBox @xy(84,97) 191 33 Uses [String1] LoadWith [ReadWrt_DirList] Border
  1011.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  1012.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  1013.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1014.       Static @xy(8,140) 269 1 "" BlackRect
  1015.    EndDialogBox
  1016.  
  1017.   EndIf
  1018.  
  1019.    If [ReadWrtErr_Rc] = 300
  1020.       SoLong Quietly
  1021.    EndIf
  1022.  
  1023.  
  1024. EndIf
  1025.  
  1026.  
  1027. EndProcedure
  1028. Procedure ExitProcedure
  1029. ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp Quietly
  1030.   AddOrChangeLineWith (CCNo=,,) As "CCNo=Deleted" At End
  1031.   AddOrChangeLineWith (ExpDate=,,) As "ExpDate=Deleted" At End
  1032. EndModifyTextFile
  1033.  
  1034.  
  1035. :ExitInit_Dll
  1036. [LdError] := 0
  1037. If FileExists ShadowDirectory\ZClient.Dll 
  1038. [String1] := ShadowDirectory\ZClient.Dll 
  1039. If FileIsInUse [String1]
  1040.    If [LdError] < 5
  1041.       IncrementNumber [LdError]
  1042.       LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  1043.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  1044.       UnLoadDll [Dll1]
  1045.       UnLoadDll [Dll1]
  1046.       Goto ExitInit_Dll
  1047.    EndIf
  1048. EndIf
  1049. EndIf
  1050.  
  1051. DeleteFiles from ShadowDirectory Quietly
  1052. ZCLient.DLL
  1053. School.Dat
  1054. School.Idx
  1055. Schools.Bmp
  1056. Etm.Bmp
  1057. EtmSplsh.Bmp
  1058. InterNet.Bmp
  1059. Ln.Bmp
  1060. MillSplh.Bmp
  1061. Office.Bmp
  1062. LName.Ini
  1063. Default.Bmp
  1064. OneM.Bmp
  1065. Uni1.Bmp
  1066. ToolBox.Bmp
  1067. Shell1.Bmp
  1068. LexNex.Bmp
  1069. LexNex1.Bmp
  1070. [Product_File].IDD
  1071. EndDeleteFiles
  1072.  
  1073.  
  1074. EndProcedure
  1075. Procedure CB_Check1
  1076. ;; *******************************************
  1077. If [Number10] = 1 .And. [Num10] = NoCharacter
  1078.    
  1079.    ;; Total Bytes
  1080.    [Number20]  := [String20]
  1081.    [Number31]  := [String31]
  1082.    [Number30]  := [Number20] + [Number31]
  1083.    [String31]  := [Number30]
  1084.   
  1085.    [Num10] := YesCharacter
  1086.  
  1087.    UpdateWindow ProdSelectDB
  1088. EndIf
  1089.  
  1090. If [Number10] = 0 .And. [Num10] = YesCharacter
  1091.  
  1092.    ;; Total Bytes
  1093.    [Number20]  := [String20]
  1094.    [Number31]  := [String31]
  1095.    [Number30]  := [Number31] - [Number20]
  1096.    [String31]  := [Number30]
  1097.  
  1098.    [Num10] := NoCharacter
  1099.  
  1100.    UpdateWindow ProdSelectDB
  1101. EndIf
  1102.  
  1103. ;; *******************************************
  1104. If [Number11] = 1 .And. [Num11] = NoCharacter
  1105.    
  1106.    ;; Total Bytes
  1107.    [Number21]  := [String21]
  1108.    [Number31]  := [String31]
  1109.    [Number30]  := [Number21] + [Number31]
  1110.    [String31]  := [Number30]
  1111.   
  1112.    [Num11] := YesCharacter
  1113.  
  1114.    UpdateWindow ProdSelectDB
  1115.  
  1116. EndIf 
  1117. If [Number11] = 0 .And. [Num11] = YesCharacter
  1118.  
  1119.    ;; Total Bytes
  1120.    [Number20]  := [String21]
  1121.    [Number31]  := [String31]
  1122.    [Number30]  := [Number31] - [Number21]
  1123.    [String31]  := [Number30]
  1124.  
  1125.    [Num11] := NoCharacter
  1126.  
  1127.    UpdateWindow ProdSelectDB
  1128. EndIf
  1129.  
  1130. ;; *******************************************
  1131. If [Number12] = 1 .And. [Num12] = NoCharacter
  1132.    
  1133.  
  1134.    ;; Total Bytes
  1135.    [Number21]  := [String22]
  1136.    [Number31]  := [String31]
  1137.    [Number30]  := [Number21] + [Number31]
  1138.    [String31]  := [Number30]
  1139.   
  1140.    [Num12] := YesCharacter
  1141.  
  1142.    UpdateWindow ProdSelectDB
  1143.  
  1144. EndIf 
  1145. If [Number12] = 0 .And. [Num12] = YesCharacter
  1146.  
  1147.    ;; Total Bytes
  1148.    [Number22]  := [String22]
  1149.    [Number31]  := [String31]
  1150.    [Number30]  := [Number31] - [Number22]
  1151.    [String31]  := [Number30]
  1152.  
  1153.    [Num12] := NoCharacter
  1154.  
  1155.    UpdateWindow ProdSelectDB
  1156. EndIf
  1157.  
  1158. ;; *******************************************
  1159. If [Number13] = 1 .And. [Num13] = NoCharacter
  1160.    
  1161.    ;; Total Bytes
  1162.    [Number23]  := [String23]
  1163.    [Number31]  := [String31]
  1164.    [Number30]  := [Number23] + [Number31]
  1165.    [String31]  := [Number30]
  1166.   
  1167.    [Num13] := YesCharacter
  1168.  
  1169.    UpdateWindow ProdSelectDB
  1170.  
  1171. EndIf 
  1172. If [Number13] = 0 .And. [Num13] = YesCharacter
  1173.  
  1174.    ;; Total Bytes
  1175.    [Number20]  := [String23]
  1176.    [Number31]  := [String31]
  1177.    [Number30]  := [Number31] - [Number23]
  1178.    [String31]  := [Number30]
  1179.  
  1180.    [Num13] := NoCharacter
  1181.  
  1182.    UpdateWindow ProdSelectDB
  1183. EndIf
  1184.  
  1185. ;; *******************************************
  1186. If [Number14] = 1 .And. [Num14] = NoCharacter
  1187.    
  1188.    ;; Total Bytes
  1189.    [Number24]  := [String24]
  1190.    [Number31]  := [String31]
  1191.    [Number30]  := [Number24] + [Number31]
  1192.    [String31]  := [Number30]
  1193.   
  1194.    [Num14] := YesCharacter
  1195.  
  1196.    UpdateWindow ProdSelectDB
  1197.  
  1198. EndIf 
  1199. If [Number14] = 0 .And. [Num14] = YesCharacter
  1200.  
  1201.    ;; Total Bytes
  1202.    [Number24]  := [String24]
  1203.    [Number31]  := [String31]
  1204.    [Number30]  := [Number31] - [Number24]
  1205.    [String31]  := [Number30]
  1206.  
  1207.    [Num14] := NoCharacter
  1208.  
  1209.    UpdateWindow ProdSelectDB
  1210. EndIf
  1211.  
  1212. ;; *******************************************
  1213. If [Number15] = 1 .And. [Num15] = NoCharacter
  1214.    
  1215.    ;; Total Bytes
  1216.    [Number25]  := [String25]
  1217.    [Number31]  := [String31]
  1218.    [Number30]  := [Number25] + [Number31]
  1219.    [String31]  := [Number30]
  1220.   
  1221.    [Num15] := YesCharacter
  1222.  
  1223.    UpdateWindow ProdSelectDB
  1224.  
  1225. EndIf 
  1226. If [Number15] = 0 .And. [Num15] = YesCharacter
  1227.  
  1228.    ;; Total Bytes
  1229.    [Number25]  := [String25]
  1230.    [Number31]  := [String31]
  1231.    [Number30]  := [Number31] - [Number25]
  1232.    [String31]  := [Number30]
  1233.  
  1234.    [Num15] := NoCharacter
  1235.  
  1236.    UpdateWindow ProdSelectDB
  1237. EndIf
  1238.  
  1239.  
  1240.  
  1241. EndProcedure
  1242. Procedure PSelect1
  1243. SetTokenDelimiterTo ,
  1244. ExamineTextFile ShadowDirectory\PLst.Ini
  1245.   [String1]  := LineWith (CiteRite,,)
  1246.   [String10] := Token 2 Of [String1]
  1247.   [String20]  := SizeOfGroup 100
  1248.  
  1249.   [String1]  := LineWith (Full Authority,,)
  1250.   [String11] := Token 2 Of [String1]
  1251.   [String21]  := SizeOfGroup 200
  1252.  
  1253.   [String1]  := LineWith (CompareRite,,)
  1254.   [String12] := Token 2 Of [String1]
  1255.   [String22]  := SizeOfGroup 300
  1256.  
  1257.   [String1]  := LineWith (Hot Docs for Word,,)
  1258.   [String13] := Token 2 Of [String1]
  1259.   [String23]  := SizeOfGroup 400
  1260.  
  1261.   [String1]  := LineWith (Hot Docs for Word Perfect,,)
  1262.   [String14] := Token 2 Of [String1]
  1263.   [String24]  := SizeOfGroup 500
  1264.  
  1265.   [String1]  := LineWith (Internet Companion,,)
  1266.   [String15] := Token 2 Of [String1]
  1267.   [String25]  := SizeOfGroup 600
  1268. ForgetTextFile
  1269.  
  1270.    DialogBox ProdSelectDB @xy(CenterScreen,80) 273 136 Returns [Dialog_rc] [Number25]On[Number26] UseHeader "LEXIS-NEXIS Product Selection" SysMenu
  1271.       Font "MS Sans Serif" 8
  1272.       LText @xy(8,4) 74 10 "Product Selection"
  1273.       LText @xy(208,4) 53 10 "Bytes Required"
  1274.  
  1275.       CheckBox CB_CiteRite     ProcIs CB_Check1 @xy(8,18) 117 12 "Cite Rite"                 Uses [Number10] LeftText
  1276.       CheckBox CB_FullAthority ProcIs CB_Check1 @xy(8,30) 117 12 "Full Authority"            Uses [Number11] LeftText
  1277.       CheckBox CB_CompareRite  ProcIs CB_Check1 @xy(8,41) 117 12 "CompareRite"               Uses [Number12] LeftText
  1278.       CheckBox HD_W            ProcIs CB_Check1 @xy(8,52) 117 12 "Hot Docs for Word"         Uses [Number13] LeftText
  1279.       CheckBox HD_WP           ProcIs CB_Check1 @xy(8,63) 117 12 "Hot Docs for Word Perfect" Uses [Number14] LeftText
  1280.       CheckBox HD_IComp        ProcIs CB_Check1 @xy(8,74) 117 12 "Internet Companion"        Uses [Number15] LeftText
  1281.  
  1282.       EditText @xy(208,18) 51 12 Uses [String20] Border ReadOnly
  1283.       EditText @xy(208,30) 51 12 Uses [String21] Border ReadOnly
  1284.       EditText @xy(208,41) 51 12 Uses [String22] Border ReadOnly
  1285.       EditText @xy(208,52) 51 12 Uses [String23] Border ReadOnly
  1286.       EditText @xy(208,63) 51 12 Uses [String24] Border ReadOnly
  1287.       EditText @xy(208,74) 51 12 Uses [String25] Border ReadOnly
  1288.  
  1289.       StaticText @xy(104,92) 35 10 "Totals"
  1290.       EditText @xy(208,92) 53 12 Uses [String31]
  1291.  
  1292.       PushButton @xy(196,114) 69 15 "Continue" 100
  1293.       PushButton @xy(120,114) 69 15 "< &Back" 200
  1294.  
  1295.    EndDialogBox
  1296.  
  1297.  
  1298. EndProcedure
  1299. Procedure Launch
  1300. ;; **********************************
  1301. ;; Launch Product #1
  1302. ;;
  1303. If [Number10] = 1
  1304.    
  1305.    PopUp #1 Run
  1306.  
  1307.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1308.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1309.    EndIf
  1310.  
  1311. EndIf
  1312.  
  1313. ;; **********************************
  1314. ;; Launch Product #2
  1315. ;;
  1316. If [Number11] = 1
  1317.    
  1318.    PopUp #2 Run
  1319.  
  1320.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1321.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1322.    EndIf
  1323.  
  1324. EndIf
  1325.  
  1326. ;; **********************************
  1327. ;; Launch Product #3
  1328. ;;
  1329. If [Number12] = 1
  1330.    
  1331.    PopUp #3 Run
  1332.  
  1333.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1334.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1335.    EndIf
  1336.  
  1337. EndIf
  1338.  
  1339. ;; **********************************
  1340. ;; Launch Product #4
  1341. ;;
  1342. If [Number13] = 1
  1343.    
  1344.    PopUp #4 Run
  1345.  
  1346.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1347.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1348.    EndIf
  1349.  
  1350. EndIf
  1351.  
  1352.  
  1353. ;; **********************************
  1354. ;; Launch Product #5
  1355. ;;
  1356. If [Number14] = 1
  1357.    
  1358.    PopUp #5 Run
  1359.  
  1360.    If OsErrorCode <> 0 .Or. OsExitCode <> 0
  1361.       PopUp Error=OSErrorCode ReturnCode=ExitCode
  1362.    EndIf
  1363.  
  1364. EndIf
  1365.  
  1366.  
  1367. EndProcedure
  1368. Procedure FullInstall
  1369. ;;***************************************************************************
  1370. ;;
  1371. ;; Full Install Option
  1372. ;;
  1373. ;;***************************************************************************
  1374. ;;
  1375.  
  1376. [PassThru_Switch1] := Back
  1377.  
  1378. [System_InstallType] := Full
  1379.  
  1380. :Full_InstallDirExists
  1381.  
  1382. SetInstallModeTo Install
  1383. Do QueInstallFiles
  1384.  
  1385. ;;;;LoadBitMap 13 ShadowDirectory\OneM.Bmp
  1386. ;;;;ShowBitMap 13 @xy(Center,Center)
  1387. ;;;;Delay 1
  1388. ;;;;TextOut @xy(Center,Center) Verifying system requirements...
  1389. ;;;;
  1390. ;;;;;; Check for FreeSpaceOnDrive 
  1391. ;;;;ClearArray [FSPChk_Dir]             ;; Clear old Array contents
  1392. ;;;;;;[FSPChk_Dir][1]  := BlankString   ;; Drive/Directory to check 
  1393. ;;;;[FSPChk_Options] := All             ;; <All> - Checks all drives for required freespace.
  1394. ;;;;Do FSPChk                           ;; <BlankString> - Checks for required freespace on a specified drive.
  1395. ;;;;
  1396. ;;;;;; Return Codes: FSPChk
  1397. ;;;;;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  1398. ;;;;;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  1399. ;;;;;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  1400. ;;;;
  1401. ;;;;Do FSPCErr
  1402. ;;;;If [FSPCErr_Rc] = 300 
  1403. ;;;;   SoLong Quietly
  1404. ;;;;EndIf
  1405. ;;;;
  1406. ;;;;If [FSPCErr_Rc] = 100
  1407. ;;;;   UnQueAllFiles   
  1408. ;;;;   ClearScreen
  1409. ;;;;   Goto Full_InstallInit
  1410. ;;;;EndIf
  1411. ;;;;
  1412. ;;
  1413. ;;:SetUp_ReadWrt
  1414. ;;;; Calling Convention: ReadWrt
  1415. ;;[ReadWrt_Dir][1]  := BlankString     ;; Drive/Directory to check 
  1416. ;;[ReadWrt_Options] := TargetOnly      ;; <BlankString> - Use if no option specified
  1417. ;;                                     ;; <All> - Checks all known drives for Read/Write access
  1418. ;;Do ReadWrt                           ;; Checks for required read / write access
  1419. ;;;; Return Codes:
  1420. ;;;; [ReadWrt_Rc]         :=     ;; 0  = All drives have Read/Write access/or selected dir
  1421. ;;;;                             ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  1422. ;;;; [ReadWrt_DirList][X] :=     ;; TextArray of Drive/Dirs not Read/Write
  1423. ;;
  1424. ;;Do ReadWrtErr
  1425. ;;If [ReadWrtErr_Rc] = 300 
  1426. ;;   SoLong Quietly
  1427. ;;EndIf
  1428. ;;
  1429. ;;If [ReadWrtErr_Rc] = 100
  1430. ;;   ClearScreen
  1431. ;;   Goto Full_InstallInit
  1432. ;;EndIf
  1433. ;;
  1434.  
  1435. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  1436. ShowBitMap 13 @xy(Center,Center)
  1437. ClearScreen
  1438. HideBitMap 13
  1439. Delay 1
  1440.  
  1441. GetQuedFiles
  1442.  
  1443.  
  1444.  
  1445.  
  1446.  
  1447. EndProcedure
  1448. Procedure Getgroup
  1449. ;;***************************************************************************
  1450. ;; GetGroup - Displays current list of all Programgroups and automatically sets
  1451. ;;            the default program group into the list if needed.
  1452. ;;
  1453. ;; HPI - Leading the world in installation technology
  1454. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  1455. ;; From the HPI script library 09/25/95 - CNH
  1456. ;; ---------------------------------------------------------------------------------------------------------------
  1457. ;; Description: GetGroup 
  1458. ;;
  1459. ;; Compatiability: GetGroup
  1460. ;; Windows, NT installers only ! 
  1461. ;;
  1462. ;; Calling Convention: GetGroup
  1463. ;; [GetGroup_DefaultGrp] :=            ;; Specified default group
  1464. ;; Do GetGroup                         ;; Calls GetGroup
  1465. ;;
  1466. ;; Return Codes:
  1467. ;; [GetGroup_Select]                   ;; Group name as selected by user
  1468. ;;
  1469. ;; Variables:
  1470. ;; Number    [GetGroup_Idx] := 0
  1471. ;; Number    [GetGroup_InfoIdx] := 0
  1472. ;; TextArray [GetGroup_Name] 
  1473. ;; TextArray [GetGroup_Info] 
  1474. ;; Text      [GetGroup_Select] := 
  1475. ;; Text      [GetGroup_DefaultGrp] := 
  1476. ;; Text      [GetIdir_Idir] := 
  1477. ;; Text      [GetGroup_InputGrp] := 
  1478. ;; Text      [GetGroup_Input] := 
  1479. ;; Text      [CPDir] := 
  1480. ;; 
  1481. ;;***************************************************************************
  1482.  
  1483. ;; Get a list of all Group Names
  1484. ClearArray [GetGroup_Name] 
  1485. [GetGroup_Name]        := GetProgramManagerGroupNames
  1486. [GetGroup_Idx]         := LastIndexUsedFor [GetGroup_Name] 
  1487. [GetGroup_Select]      := [GetGroup_DefaultGrp]
  1488. If [GetGroup_InputGrp] = BlankString
  1489.    [GetGroup_InputGrp] := [GetGroup_DefaultGrp]
  1490. EndIf  
  1491.  
  1492. ;; Check and see if default group already exists, if not add it as an option            
  1493. ClearArray [GetGroup_Info] 
  1494. [GetGroup_Idx] := 0             
  1495. [GetGroup_Info] := GetProgramManagerGroupInfo [GetGroup_InputGrp]
  1496. [GetGroup_InfoIdx] := LastIndexUsedFor [GetGroup_Info]
  1497. If [GetGroup_InfoIdx] = 0
  1498.    IncrementNumber [GetGroup_Idx] 
  1499.    [GetGroup_Name][[GetGroup_Idx]] := [GetGroup_InputGrp]
  1500. EndIf
  1501.  
  1502. ;; Prompt user for new program group name
  1503. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Select Program Group"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  1504.       Font "MS Sans Serif" 8
  1505.       BitMap @xy(8,8) BitMap 14
  1506.       Static @xy(8,140) 269 1 "" BlackRect
  1507.       PushButton @xy(180,145) 45 15 "Next >" 200
  1508.       PushButton @xy(136,145) 45 15 "< &Back" 100
  1509.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1510.       
  1511.       LText @xy(84,7) 189 40 "An icon for the electronic materials you are currently installing will be created. The default group is LEXIS-NEXIS Legal Education. You may select another group or enter a new one in the list box below."
  1512.       LText @xy(84,52) 59 12 "Existing Groups:"
  1513.       ComboBox @xy(84,62) 191 70 Uses [GetGroup_InputGrp] LoadWith [GetGroup_Name] Border Sort
  1514. EndDialogBox
  1515.  
  1516. :GetGroup_Eoj
  1517.  
  1518. If [Dialog_Rc] = 300
  1519.    SoLong Quietly
  1520. EndIf
  1521.  
  1522. EndProcedure
  1523. Procedure NextConfirm
  1524. ;;;; Check for FreeSpaceOnDrive 
  1525. ;;ClearArray [FSPChk_Dir]             ;; Clear old Array contents
  1526. ;;[FSPChk_Dir][1]  := [GetIdir_IDir]  ;; Drive/Directory to check 
  1527. ;;[FSPChk_Options] := BlankString     ;; <All> - Checks all drives for required freespace.
  1528. ;;Do FSPChk                           ;; <BlankString> - Checks for required freespace on a specified drive.
  1529.  
  1530. if [GetIdir_IDir] <> BlankString
  1531.   If .Not. DirectoryAllowable [GetIdir_IDir] 
  1532.     Dialog UserHeader "Directory Not Acceptable"
  1533.      Invalid directory specified. 
  1534.      Please enter a valid drive and directory.
  1535.     EndDialog     
  1536.     Exit
  1537.   EndIf
  1538. else
  1539.     Dialog UserHeader "Directory Not Acceptable"
  1540.      Invalid directory specified. 
  1541.      Please enter a valid drive and directory.
  1542.     EndDialog     
  1543.     Exit
  1544. EndIf
  1545.  
  1546. :NextConfirm_ReadWrt
  1547. ;; Calling Convention: ReadWrt
  1548. [ReadWrt_Dir][1]  := [GetIdir_IDir]  ;; Drive/Directory to check 
  1549. [ReadWrt_Options] := BlankString     ;; <BlankString> - Use if no option specified
  1550.                                      ;; <All> - Checks all known drives for Read/Write access
  1551. Do ReadWrt                           ;; Checks for required freespace on a specified drive.
  1552.  
  1553. ;; Return Codes:
  1554. ;; [ReadWrt_Rc]         :=     ;; 0  = All drives have Read/Write access/or selected dir
  1555. ;;                             ;; >0 = Indicates one or more Drives/dirs do not have read/write  
  1556. ;; [ReadWrt_DirList][X] :=     ;; TextArray of Drive/Dirs not Read/Write
  1557.  
  1558. Do ReadWrtErr
  1559. If [ReadWrtErr_Rc] = 300 
  1560.    SoLong Quietly
  1561. EndIf
  1562.  
  1563. If [ReadWrtErr_Rc] = 100
  1564.    Exit
  1565. EndIf
  1566.  
  1567. ClearArray [FSPChk_MsgList]
  1568. [FSPChk_Rc] := 0
  1569.  
  1570. UnQueAllFiles
  1571. If [Reg_Media] = D
  1572.    Do QueInstallFiles
  1573.    [Number1] := QueSize
  1574.    ;;   [Number2] := 250000 
  1575.    ;;   [Number3] := [Number1] + [Number2]
  1576.    ;;   [GetIDir_TQueSize] := [Number3]
  1577.  
  1578.    ;; Check for FreeSpaceOnDrive 
  1579.    ClearArray [FSPChk_Dir]             ;; Clear old Array contents
  1580.    ;;[FSPChk_Dir][1]  := BlankString   ;; Drive/Directory to check 
  1581.    [FSPChk_Options] := All             ;; <All> - Checks all drives for required freespace.
  1582.    Do FSPChk                           ;; <BlankString> - Checks for required freespace on a specified drive.
  1583.    UnQueAllFiles
  1584.   
  1585.   Else
  1586.  
  1587.    [Number3] := [Disk_Space_Required]
  1588.    If [Number3] > FreeSpaceOnDrive [GetIdir_IDir]
  1589.       [FSPChk_Rc] := 1                           ;; 0  = All drives have adequate free space available.                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  1590.       [FSPChk_MsgList][[FSPChk_Rc]] := [GetIdir_IDir]    ;; TextArray of Drive/Dirs with insufficent freespace.
  1591.       ;; Return Codes: FSPChk
  1592.       ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  1593.       ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  1594.       ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  1595.    EndIf
  1596.  
  1597. EndIf
  1598.  
  1599. ;; Return Codes: FSPChk
  1600. ;; [FSPChk_Rc]         :=     ;; 0  = All drives have adequate free space available.
  1601. ;;                            ;; >0 = Indicates one or more Drives/dirs required freespace.
  1602. ;; [FSPChk_MsgList][X] :=     ;; TextArray of Drive/Dirs with insufficent freespace.
  1603.  
  1604. Do FSPCErr
  1605. If [FSPCErr_Rc] = 300 
  1606.    SoLong Quietly
  1607. EndIf
  1608.  
  1609. If [FSPCErr_Rc] = 100
  1610.    Exit
  1611. EndIf
  1612.  
  1613. Exit DismissDialog
  1614.  
  1615.  
  1616. EndProcedure
  1617. Procedure GetIDir
  1618.  
  1619. if [GetIdir_IDir] <> BlankString
  1620.   If .Not. DirectoryAllowable [GetIdir_IDir] 
  1621.     Dialog UserHeader "Directory Not Acceptable"
  1622.      Invalid directory specified. 
  1623.      Please enter a valid drive and directory.
  1624.     EndDialog     
  1625.     Exit
  1626.   EndIf
  1627. else
  1628.     Dialog UserHeader "Directory Not Acceptable"
  1629.      Invalid directory specified. 
  1630.      Please enter a valid drive and directory.
  1631.     EndDialog     
  1632.     Exit
  1633. EndIf
  1634.  
  1635. UnQueAllFiles
  1636. If [Reg_Media] = D
  1637.    Do QueInstallFiles
  1638.    [Number1] := QueSize
  1639.    [Number2] := 250000 
  1640.    [Number3] := [Number1] + [Number2]
  1641.    [GetIDir_TQueSize] := [Number3]
  1642.   Else
  1643.    [GetIDir_TQueSize] := [Disk_Space_Required]
  1644. EndIf
  1645. UnQueAllFiles
  1646.  
  1647. [String1] := SubStringOf [GetIdir_IDir] From 4 to End
  1648. DetermineInstallationDrive [GetIDir_TQueSize] RequireFixed 
  1649. DetermineInstallationDirectory InstallationDrive:\[String1] RequireFixed NoCreate
  1650.  
  1651. [GetIdir_IDir] := [InstallationDirectory]
  1652.  
  1653.  
  1654. EndProcedure
  1655. Procedure QueInstallFiles
  1656.  
  1657. Quefilegroup 100
  1658.  
  1659. EndProcedure
  1660. Procedure OnLine
  1661. :Retry
  1662. SetMouseCursor Wait
  1663.  
  1664. [String1] := [Product_ID][Product_File]
  1665. SetProductClassTo "SUPER PROGRAM II"  ;; required
  1666. [Str1] := InstanceCode
  1667.  
  1668. ;;Do InstDLL
  1669.  
  1670. [L_Check] := LengthOf [Product_Name]
  1671. If [L_Check] > 165
  1672.    [T_Desc] := SubStringOf [Product_Name] From 1 To 165
  1673.    [T_Desc] := [T_Desc] ...
  1674.   Else
  1675.    [T_Desc] := [Product_Name] 
  1676. EndIf
  1677.  
  1678. if [Reg_CCNo] = BlankString 
  1679.    [StringS] := None
  1680. else
  1681.    [StringS] := [Reg_CCNo]
  1682. EndIf
  1683.  
  1684. [CC_Text]  := Card Number:       [StringS]   Exp. Date: [Reg_ExpDate]
  1685. [PI_Text]  := Product Id:            [Product_ID]     LN ID: [Reg_LnId] 
  1686. [Ist_Text] := Instance Code:      [Str1]
  1687. SetMouseCursor Arrow
  1688.  
  1689. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Unlock Software Manually"  
  1690.         Font "MS Sans Serif" 8
  1691.         LText @xy(75,7) 195 50 "To proceed with the purchase and installation of ([T_Desc]) ."
  1692.         LText @xy(75,45) 195 40 "You will need to dial [Support_Number] while at this screen. Have your credit card, Product Id, and Instance Code ready as shown below. When the sales representative gives you the corresponding key, enter the Access Code you are given in the box below."
  1693.         Bitmap @xy(8,7) Bitmap 14
  1694.         LText @xy(75,90) 195 10 "[CC_Text]"
  1695.         LText @xy(75,100) 195 10 "[PI_Text]"
  1696.         LText @xy(75,110) 195 10 "[Ist_Text]"
  1697.  
  1698.         LText @xy(75,125) 60 10 "Access Code:"
  1699.         EditText @xy(140,125) 85 12 Uses [Str2] Border UpperCase
  1700.  
  1701.  PushButton OnLine_Next ProcIs OnLine_Check @xy(180,145) 45 15 "Next >" 200
  1702.  
  1703.  PushButton @xy(135,145) 45 15 "< &Back" 100 
  1704.  PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1705.  Static @xy(8,140) 269 1 "" BlackRect
  1706. EndDialogBox
  1707.  
  1708. If [Dialog_Rc] = 300
  1709.    SoLong Quietly
  1710. EndIf
  1711.  
  1712.  
  1713.  
  1714.  
  1715. EndProcedure
  1716. Procedure InstallCheck
  1717. If [GetIdir_IDir] = BlankString
  1718.    [GetIdir_IDir] := C:[Default_Directory_Name]
  1719. EndIf
  1720.  
  1721. [InstallationDirectory] := [GetIdir_IDir] 
  1722.  
  1723. [Text_1] := [Infobase_Title] will be installed to the following drive and directory. To change the installation directory, use the edit box below or select 'Change' and follow the prompts.
  1724. LoadBitMap ShadowDirectory\etm.Bmp
  1725. UpdateWindow
  1726.  
  1727. ;; ***Substitute source directory for ShadowDirectory argument if necessary***
  1728.    DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Determine Installation Drive and Directory"  ;;ShadowDirectory\DTRINST.DBB
  1729.       Font "MS Sans Serif" 8
  1730.       Static @xy(84,7) 190 50 "[Text_1]"
  1731.       BitMap @xy(8,7) BitMap 14
  1732.       PushButton N_Button ProcIs NextConfirm @xy(180,145) 45 15 "Next >" 200
  1733.       PushButton @xy(135,145) 45 15 "< &Back" 100
  1734.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1735.       Static @xy(8,140) 269 1 "" BlackRect
  1736.       GroupBox @xy(84,100) 193 32 "Install to:"
  1737.       PushButton InstallDir ProcIs GetIDir @xy(224,111) 45 15 "Change" 400
  1738.       EditText @xy(90,112) 129 12 Uses [GetIdir_IDir] Border UpperCase 
  1739.       
  1740.    EndDialogBox
  1741.  
  1742. If [Dialog_Rc] = 300
  1743.    SoLong Quietly
  1744. EndIf
  1745.  
  1746. [InstallationDirectory] := [GetIdir_IDir] 
  1747.  
  1748.  
  1749.  
  1750. EndProcedure
  1751. Procedure IICons
  1752. ;;***************************************************************************
  1753. ;; IICons - Checks all Drives/Dirs freespace against QueSize  
  1754. ;;
  1755. ;; HPI - Leading the world in installation technology
  1756. ;; ** Windows / Windows NT / OS2 / DOS / Client Server **
  1757. ;; From the HPI script library 09/25/95 - CNH
  1758. ;; ---------------------------------------------------------------------------------------------------------------
  1759. ;; Description: IICons 
  1760. ;;
  1761. ;; Compatiability: IICons
  1762. ;; Windows, Win95, NT installers only ! 
  1763. ;;
  1764. ;; Calling Convention: IICons
  1765. ;; [IICons_Dir][X]  :=               
  1766. ;; [IICons_Options] := BlankString  
  1767. ;; Do IICons                         
  1768. ;;
  1769. ;; Return Codes: IICons
  1770. ;;
  1771. ;; Variables: IICons
  1772. ;;
  1773. ;;*************************************************************
  1774.  
  1775. ;; Handle "," in command line
  1776.  
  1777. ClearScreen
  1778. ShowBitMap 13 @xy(Center,Center)
  1779. Delay 1
  1780. TextOut @xy(Center,Center) Installing icons...
  1781. [IICons_Group] := [GetGroup_InputGrp]
  1782.  
  1783. ;;PopUp AddItem([Views31IDir]\Views.Exe -i [InstallationDirectory]\[Shadow_File_Name],[Icon_Name])
  1784.  
  1785. ProgramManagerDDE
  1786.   CreateGroup([IICons_Group])
  1787.   DeleteItem([Icon_Name])
  1788.   AddItem([Views31IDir]\Views.Exe -i [InstallationDirectory]\[Shadow_File_Name],[Icon_Name])
  1789. EndProgramManagerDDe
  1790.  
  1791. ProgramManagerDDE
  1792.   CreateGroup([IICons_Group])
  1793.   ShowGroup([IICons_Group],2)
  1794. EndProgramManagerDDe
  1795.  
  1796. HideBitMap 13
  1797. ClearScreen
  1798.  
  1799.  
  1800. EndProcedure
  1801. Procedure ModIni
  1802. ClearScreen
  1803. ShowBitMap 13 @xy(Center,Center)
  1804. Delay 1
  1805. TextOut @xy(Center,Center) Modifying Ini files...
  1806.  
  1807. If .Not. FileExists [WindowsDirectory]\lname.ini
  1808.    CreateFile [WindowsDirectory]\lname.ini
  1809. EndIf
  1810.  
  1811. [Array1][1] := Master Infobase Directory
  1812. [Array1][2] := [Infobase_Title] - Master
  1813. [Array1][3] := [InstallationDirectory]\[Infobase_File_Name]
  1814. [Array1][4] := [WindowsDirectory]\lname.ini
  1815. WritePrivateProfileString Using [Array1] NoBackup
  1816.  
  1817. [Array1][1] := Infobase Directory
  1818. [Array1][2] := [Infobase_Title]
  1819. [Array1][3] := [InstallationDirectory]\[Shadow_File_Name]
  1820. [Array1][4] := [WindowsDirectory]\lname.ini
  1821. WritePrivateProfileString Using [Array1] NoBackup
  1822.  
  1823. HideBitMap 13
  1824. ClearScreen
  1825.  
  1826. EndProcedure
  1827. Procedure DDENonFatalErrorTrap
  1828. ;; Dummy procedure, do not delete
  1829. EndProcedure
  1830. Procedure FindViews31
  1831.  
  1832.  
  1833.  
  1834. SetMouseCursor Wait
  1835. Delay 1
  1836.  
  1837.  
  1838.  
  1839. ClearArray [Views31Dirs]
  1840. ClearScreen
  1841.  
  1842. ShowBitMap 13 @xy(Center,Center)
  1843. Delay 1
  1844. TextOut @xy(Center,Center) Searching for Folio VIEWS ...
  1845.  
  1846. ;; Default search for root location
  1847. ;; must add a trailing \
  1848. ;;
  1849. [Views31IDir] := BlankString
  1850.  
  1851. [FPFile_CurDrive] := C
  1852. While [FPFile_CurDrive] < Z
  1853.   If DriveIsPresent [FPFile_CurDrive] 
  1854.      If .Not. DriveIsRemoveable [FPFile_CurDrive]
  1855.        If DirectoryExists [FPFile_CurDrive]:\Views31
  1856.          If FileExists [FPFile_CurDrive]:\Views31\views.exe .AND. FileExists [FPFile_CurDrive]:\Views31\rightsmn.dll .AND. FileExists [FPFile_CurDrive]:\Views31\libstub.dll
  1857.             [Views31IDir] := [FPFile_CurDrive]:\Views31
  1858.             SetMouseCursor Arrow
  1859.             Exit
  1860.           EndIf
  1861.        EndIf
  1862.       Else
  1863.        ;; DefineDrive [FPFile_CurDrive] Absent
  1864.      EndIf
  1865.   EndIf
  1866.   IncrementString [FPFile_CurDrive]
  1867. EndWhile
  1868.  
  1869. ClearArray [Views31Dirs]
  1870. [FPFile_CurDrive] := C
  1871. While [FPFile_CurDrive] < Z
  1872. [SSkip] := 0
  1873.  
  1874.   If DriveIsPresent [FPFile_CurDrive]
  1875.  
  1876.      If DriveIsRemote [FPFile_CurDrive]            ;; Drive is on the network
  1877.         ;; PopUp Not Searching Remote [FPFile_CurDrive]      
  1878.         [SSkip] := 1
  1879.         Goto FPFile_NextDrive
  1880.      EndIf
  1881.  
  1882.      If DriveIsRemoveable [FPFile_CurDrive]            ;; Drive is removable
  1883.         ;; PopUp Not Searching Remote [FPFile_CurDrive]      
  1884.         [SSkip] := 1
  1885.         Goto FPFile_NextDrive
  1886.      EndIf
  1887.  
  1888.      If FreeSpaceOnDrive [FPFile_CurDrive] < 1    ;; CDROM Present no CDROM disk in drive
  1889.         ;; PopUp Not Searching [FPFile_CurDrive]      
  1890.         [SSkip] := 1
  1891.         Goto FPFile_NextDrive
  1892.      EndIf
  1893.  
  1894.      If FreeSpaceOnDrive [FPFile_CurDrive] = 0     ;; No freespace, cannot write to drive
  1895.         If DirectoryAllowable [FPFile_CurDrive]:\  ;; Probably a CDRom drive...
  1896.           Else 
  1897.          ;;  PopUp Not Searching [FPFile_CurDrive]
  1898.            [SSkip] := 1
  1899.               Goto FPFile_NextDrive
  1900.         EndIf
  1901.      EndIf
  1902.  
  1903.      If [SSkip] = 0
  1904.         ;; PopUp Searching [FPFile_CurDrive]
  1905.         ClearArray [FPFile_Dirs] 
  1906.         [FPFile_Dirs] := FullPathTo views.exe Origin=[FPFile_CurDrive]:\ Quietly
  1907.  
  1908. ;;GetMenuChoice
  1909. ;;[FPFile_Dirs]
  1910. ;;EndGetMenuChoice
  1911.  
  1912.         [Number1] := LastIndexUsedFor [FPFile_Dirs]
  1913.         If [Number1] > 0
  1914.            [Number2] := 0
  1915.            While [Number2] < [Number1] 
  1916.              IncrementNumber [Number2]
  1917.              [String1] := [FPFile_Dirs][[Number2]] 
  1918.  
  1919.              ;; Filter Duplicate entries
  1920.              [Number21] := 0
  1921.              [Number31] := LastIndexUsedFor [Views31Dirs]
  1922.              [Number32] := 0
  1923.  
  1924.              If [Number31] > 0 
  1925.              While [Number21] < [Number31] 
  1926.                IncrementNumber [Number21]
  1927.                [String21] := [Views31Dirs][[Number21]]
  1928.                If [String21] = [String1]
  1929.                   Goto FPFile_FDupCheck 
  1930.                EndIf
  1931.              EndWhile 
  1932.              EndIf 
  1933.              IncrementNumber [Number31]
  1934.              [Views31Dirs][[Number31]] := [String1]
  1935.              :FPFile_FDupCheck 
  1936.            EndWhile
  1937.            ;; Goto File_Found
  1938.         EndIf
  1939.      EndIf
  1940.   EndIf
  1941.  
  1942.   :FPFile_NextDrive
  1943.   IncrementString [FPFile_CurDrive]
  1944. EndWhile
  1945.  
  1946. ;;:File_Found
  1947. ;;GetMenuChoice
  1948. ;;[Views31Dirs]
  1949. ;;EndGetMenuChoice
  1950. ;;
  1951.  
  1952. ;; If not found off of the root then search all 
  1953. ;; local harddrives
  1954. ;; 
  1955.  
  1956. ;; Multiple paths to the same .exe name, prompt user to specify which path
  1957. ;; is the current path.
  1958. [Number1] := LastIndexUsedFor [Views31Dirs]
  1959.  
  1960. If [Number1] > 1
  1961. ClearScreen
  1962. HideBitMap 13
  1963.  
  1964. :Prompt_User
  1965. [ScanIcons_ExePath] := BlankString
  1966. [ScanIcons_Text]    := Because you have multiple versions of VIEWS.EXE, we were unable to determine which directory contains your current working version of VIEWS.EXE.
  1967. [Invalid_Views]     := False
  1968.  
  1969. ;; Prompt user for new program group name
  1970. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Unable To Determine Working Directory"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  1971.       Font "MS Sans Serif" 8
  1972.       BitMap @xy(8,8) BitMap 14
  1973.       Static @xy(8,140) 269 1 "" BlackRect
  1974.       PushButton FViews31 ProcIs Check_Views31 @xy(180,145) 45 15 "Next >" 200
  1975.       PushButton @xy(136,145) 45 15 "< &Back" 100 Disabled
  1976.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  1977.       LText @xy(84,7) 189 40 "[ScanIcons_Text]"
  1978.       LText @xy(84,52) 110 12 "Select one of the following directories."
  1979.       ComboBox @xy(84,60) 191 89 Uses [ScanIcons_ExePath] LoadWith [Views31Dirs] Border ;; Sort
  1980. EndDialogBox
  1981.  
  1982.    If [Dialog_Rc] = 300
  1983.       SoLong Quietly
  1984.    EndIf
  1985.  
  1986.    if [Invalid_Views] = True
  1987.       goto Prompt_User
  1988.    EndIf
  1989.  
  1990.    ;; Filter Code to filter out unwanted text leaving only the directory path.
  1991.       [Views31IDir] := PathNameOf [ScanIcons_ExePath]
  1992.       Exit
  1993.  
  1994.   Else
  1995.  
  1996.    [Views31IDir] := PathNameOf [Views31Dirs][1]
  1997.  
  1998.    if FileExists [Views31IDir]\rightsmn.dll .And. FileExists [Views31IDir]\libstub.dll
  1999.       Exit 
  2000.    else
  2001.       Dialog UserHeader "Missing Required Files"
  2002.       You are missing files that are required for
  2003.       Folio Bound Infobases.  You must reinstall 
  2004.       Folio VIEWS from LEXIS-NEXIS Office for Legal 
  2005.       Education after you complete the current
  2006.       product installation. 
  2007.       EndDialog
  2008.       Exit
  2009.    EndIf
  2010.  
  2011.   ;; Filter Code to filter out unwanted text leaving only the directory path.
  2012.  
  2013. EndIf
  2014.  
  2015.  
  2016. ;; If not found anywhere then assume that it is in the path
  2017.  
  2018. ClearScreen
  2019. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Unable To Determine Working Directory"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  2020.   Font "MS Sans Serif" 8
  2021.   BitMap @xy(8,7) BitMap 14
  2022.   LText @xy(83,7) 197 50 "The installer was unable to locate Views.exe. Please install Folio VIEWS from the LEXIS-NEXIS Millennium+ Software Collection."
  2023.   Static @xy(8,140) 269 1 "" BlackRect
  2024.   PushButton @xy(180,145) 45 15 "Next >" 200
  2025.   PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  2026.   PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  2027. EndDialogBox
  2028.  
  2029. If [Dialog_Rc] = 300
  2030.    SoLong Quietly
  2031. EndIf
  2032.  
  2033.  
  2034. ClearScreen
  2035. HideBitMap 13
  2036. EndProcedure
  2037.  
  2038. Procedure LexID_Help
  2039.  
  2040.  
  2041. DialogBox  @xy(center,center) 170 110 Returns [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS ID Required"
  2042.   Font "MS Sans Serif" 8
  2043.   LText @xy(5,10) 160 25 "You must have a LEXIS-NEXIS ID in order to use this software."
  2044.   LText @xy(5,30) 160 30 "First year students may install the software without a LEXIS-NEXIS ID; however, they cannot use the software without one."
  2045.   LText @xy(5,60) 160 25 "If you do not have an ID, please contact your LEXIS-NEXIS Student Account Representative."
  2046.   PushButton @xy(60,90) 45 15 "OK" 200
  2047. EndDialogBox
  2048.  
  2049. EndProcedure
  2050. Procedure RegUser1
  2051.  
  2052.  
  2053. If [RegUser1_Back] = Yes
  2054.    Goto RegUser1_Input 
  2055.   Else
  2056.    SetMouseCursor Wait
  2057.    LoadBitMap 13 ShadowDirectory\OneM.BMP
  2058.    ShowBitMap 13 @xy(Center,Center)
  2059.    TextOut OnBitMap 13 @xy(60,25) Loading Registration Form ...
  2060. EndIf
  2061.  
  2062. ;; ------------------------------
  2063. ;; Load GradYear list
  2064. ;; 
  2065. [GradYear_Beg]  := 1995
  2066. [GradYear_End]  := 0
  2067. While [GradYear_Beg] < 2002
  2068.   IncrementNumber [GradYear_End]
  2069.   [GradYear_Beg] := [GradYear_Beg] + 1
  2070.   [GradYear_List][[GradYear_End]] := [GradYear_Beg]
  2071. EndWhile
  2072.  
  2073. ;; ------------------------------
  2074. ;; Findout if user registration form file exists
  2075. ;;
  2076. If FileExists [WindowsDirectory]\LNForms.Dat
  2077.    ;; Initialize required variables
  2078.    ExamineTextFile [WindowsDirectory]\LNForms.Dat
  2079.      [Reg_LnId]      := SettingFor LnId
  2080.      [Reg_FName]     := SettingFor FName
  2081.      [Reg_LName]     := SettingFor LName
  2082.      [Reg_MName]     := SettingFor MName
  2083.      [Reg_Addr1]     := SettingFor Addr1
  2084.      [Reg_Addr2]     := SettingFor Addr2
  2085.      [Reg_City]      := SettingFor City
  2086.      [Reg_State]     := SettingFor State
  2087.      [Reg_Zip]       := SettingFor Zip
  2088.      [Reg_Phone]     := SettingFor Phone
  2089.      [RegH_Addr1]    := SettingFor RegH_Addr1
  2090.      [RegH_Addr2]    := SettingFor RegH_Addr2
  2091.      [RegH_City]     := SettingFor RegH_City
  2092.      [RegH_State]    := SettingFor RegH_State
  2093.      [RegH_Zip]      := SettingFor RegH_Zip
  2094.      [RegH_Phone]    := SettingFor RegH_Phone
  2095.      [Reg_SchoolId]  := SettingFor SchoolId
  2096.      [Reg_GradYear]  := SettingFor GradYear
  2097.      [Reg_CBLawReviewYn]  := SettingFor LawReviewYn
  2098.      [Reg_CBLawReview1Yn] := SettingFor MootCourtYn
  2099.      [Reg_EMail]        := SettingFor EMail
  2100.      [Reg_InstallOS]    := SettingFor InstallOS
  2101.  
  2102.      [Reg_OSFRb]     := SettingFor OSFRB
  2103.      [Reg_IAttempt]  := SettingFor IAttempt
  2104.      [Exp_Month]     := SettingFor ExpMonth
  2105.      [Exp_Year]      := SettingFor ExpYear
  2106.      [Reg_SchoolIdX] := SettingFor RegSchoolIdX
  2107.      [Reg_CBLawReview]  := SettingFor LawReview
  2108.      [Reg_CBLawReview1] := SettingFor MootCourt
  2109.  
  2110.    ForgetTextFile
  2111.  
  2112. EndIf 
  2113.  
  2114. ;; ------------------------------
  2115. ;; Load List of law schools
  2116. ;; Format:Law School A=1
  2117. ;;
  2118.  
  2119. If FileExists ShadowDirectory\School.Idx
  2120.    SetTokenDelimiterTo =
  2121.  
  2122.   [Schools_List] := ShadowDirectory\School.idx
  2123.  
  2124.   If [Reg_SchoolId] = BlankString
  2125.      [Reg_SchoolIdX] := [Schools_List][1] 
  2126.   EndIf
  2127.  
  2128.   Else
  2129.    [Reg_SchoolIdX] := (No Schools Found)
  2130.    [Schools_List][1] := [Reg_SchoolIdX]
  2131. EndIf
  2132.  
  2133. ;; ------------------------------
  2134. ;; Set defaults if not set
  2135. ;;
  2136. If [Reg_GradYear] = BlankString
  2137.    [Reg_GradYear] := [GradYear_Beg]
  2138. EndIf
  2139.  
  2140. If [Reg_OSFRb] = 0
  2141.    [Reg_OSFRb] := 1
  2142. EndIf
  2143.  
  2144. If [Reg_OSFRb] > 1
  2145.    [Student_Info] := Disabled   
  2146. EndIf
  2147.  
  2148. [Number1] := 0
  2149. While [Number1] < 12
  2150.   IncrementNumber [Number1]
  2151.   If [Number1] > 9
  2152.      [Exp_MonthLst][[Number1]] := [Number1]
  2153.     Else
  2154.      [Exp_MonthLst][[Number1]] := 0[Number1]
  2155.   EndIf
  2156. EndWhile
  2157. [Number1] := 95
  2158. While [Number1] < 100
  2159.   IncrementNumber [Number1]
  2160.   If [Number1] = 100
  2161.      [String1] := 00 
  2162.     Else
  2163.      [String1] := [Number1]
  2164.   EndIf
  2165.   [String2] := SubStringOf [String1] From 1 To 2 
  2166.   [Exp_YearLst][[Number1]] := [String2]
  2167. EndWhile
  2168.  
  2169. ;; ------------------------------
  2170. ;; Display user registration screen
  2171. ;;
  2172.  
  2173.  
  2174. :RegUser1_Input
  2175.  
  2176.    SetMouseCursor Arrow
  2177.    UnloadBitMap 13
  2178.    ClearScreen
  2179.    DialogBox RegScreen @xy(CenterScreen,80) 306 164 Returns [Dialog_Rc] BlackOnWhite UseHeader "LEXIS-NEXIS Software Registration"
  2180.       Font "MS Sans Serif" 8
  2181.  
  2182.       LText @xy(9,7) 59 12 "LEXIS-NEXIS ID"
  2183.       EditText @xy(66,5) 40 12 Uses [Reg_LnId] AutoHScroll Border
  2184.       PushButton PB_Lex ProcIs LexID_Help @xy(107,5) 12 11 "<-" 500
  2185.  
  2186.       GroupBox @xy(8,18) 124 30 "Name"
  2187.       StaticText @xy(12,25) 36 10 "First"
  2188.       EditText @xy(12,33) 44 12 Uses [Reg_FName] AutoHScroll Border
  2189.       LText @xy(60,25) 14 12 "MI"
  2190.       EditText @xy(60,33) 12 12 Uses [Reg_MName] Border UpperCase
  2191.       StaticText @xy(76,25) 36 12 "Last"
  2192.       EditText @xy(76,33) 50 12 Uses [Reg_LName] AutoHScroll Border
  2193.  
  2194.       GroupBox @xy(8,50) 124 110 "Address Information"
  2195.       LText @xy(12,58) 100 10 "Current Mailing Address"
  2196.       EditText @xy(12,68) 115 12 Uses [Reg_Addr1] AutoHScroll Border
  2197.       EditText @xy(12,80) 115 12 Uses [Reg_Addr2] AutoHScroll Border
  2198.       LText @xy(12,94) 36 10 "City"
  2199.       EditText @xy(12,104) 59 12 Uses [Reg_City] AutoHScroll Border
  2200.       LText @xy(76,94) 21 10 "State"
  2201.       EditText @xy(76,104) 16 12 Uses [Reg_State] Border UpperCase
  2202.       LText @xy(98,94) 30 10 "Zip Code"
  2203.       EditText @xy(98,104) 26 12 Uses [Reg_Zip] Border
  2204.       LText @xy(12,117) 36 10 "Phone"
  2205.       EditText @xy(12,126) 59 12 Uses [Reg_Phone] Border
  2206.       LText @xy(76,117) 42 10 "E-Mail Address"
  2207.       EditText @xy(76,126) 50 12 Uses [Reg_EMail] AutoHScroll Border
  2208.  
  2209.       PushButton PB_HomeAddr ProcIs HomeAddress @xy(23,142) 95 15 "Permanent Mailing Address" 400
  2210.  
  2211.       GroupBox @xy(138,18) 160 80 "School Information"
  2212.       LText @xy(143,25) 59 10 "Law School"
  2213.       ComboBox @xy(143,35) 150 100 Uses [Reg_SchoolIdX] LoadWith [Schools_List] DropDownList 
  2214.       RadioButtonGroup ProcIs StudentType Uses [Reg_OSFRb]
  2215.          RadioButton @xy(143,52) 50 8 "Student" 
  2216.          RadioButton @xy(143,60) 50 8 "Professor"
  2217.          RadioButton @xy(143,68) 50 8 "Librarian"
  2218.          RadioButton @xy(143,76) 50 8 "Dean"
  2219.          RadioButton @xy(143,84) 70 8 "Placement Director"
  2220.  
  2221.       LText @xy(220,52) 36 10 "Grad Year"
  2222.       ComboBox CB_GradYear @xy(220,62) 30 70 Uses [Reg_GradYear] LoadWith [GradYear_List] DropDownList [Student_Info]
  2223.       CheckBox CB_LawReview  @xy(220,77) 80 8 "Law Review/Journal" Uses [Reg_CBLawReview] [Student_Info]
  2224.       CheckBox CB_LawReview1 @xy(220,85) 60 8 "Moot Court" Uses [Reg_CBLawReview1] [Student_Info]
  2225.  
  2226.       GroupBox @xy(138,100) 160 40 "Credit Information"
  2227.       LText @xy(152,110) 70 10 "Credit Card Number"
  2228.       EditText @xy(152,120) 75 12 Uses [Reg_CCNo] Border
  2229.       LText @xy(240,110) 32 10 "Exp. Date"
  2230.  
  2231.       ComboBox @xy(240,120) 20 70 Uses [Exp_Month] LoadWith [Exp_MonthLst] DropDownList
  2232.       ComboBox @xy(260,120) 20 55 Uses [Exp_Year]  LoadWith [Exp_YearLst]  DropDownList
  2233.  
  2234.       PushButton Back                          @xy(153,145) 45 15 "< &Back" 200
  2235.       PushButton RegCheck                      @xy(198,145) 45 15 "Next >" 100
  2236.       PushButton C_Button ProcIs ExitConfirm @xy(252,145)  45 15 "Cancel" 300
  2237.    EndDialogBox
  2238.  
  2239. ;; EditText @xy(240,120) 30 10 Uses [Reg_ExpDate] Border
  2240.  
  2241. if [Dialog_Rc] = 100
  2242.    do RegUser_Check
  2243.    if [Dialog_Rc] = 200 
  2244.       goto RegUser1_Input
  2245.    EndIf
  2246.  
  2247.    if [Dialog_Rc] = 300
  2248.       [Dialog_Rc] := 100
  2249.    EndIf
  2250. EndIf
  2251.  
  2252. If [Dialog_Rc] = 300
  2253.    Do ExitConfirm
  2254. EndIf
  2255.  
  2256. If [Dialog_Rc] = 200
  2257.    [RegUser1_Back] := Yes
  2258.   Else
  2259.    [RegUser1_Back] := BlankString
  2260. EndIf
  2261.  
  2262. If [Dialog_Rc] = 300
  2263.    SoLong Quietly
  2264. EndIf
  2265.  
  2266. ;; Submitt user registration form to server
  2267. ;;
  2268.  
  2269.  
  2270. If [Dialog_Rc] = 100
  2271.  
  2272.    ;; Update user registration form file
  2273.    ;;
  2274.    If FileExists [WindowsDirectory]\LNForms.Dat
  2275.       DeleteFiles From [WindowsDirectory] Quietly
  2276.         LNForms.Dat
  2277.       EndDeleteFiles
  2278.    EndIf
  2279.  
  2280.    ;; Set vars
  2281.    ;;  
  2282.    [Reg_ExpDate] := [Exp_Month]\[Exp_Year] 
  2283.  
  2284.    ;; Filter chars to correct length
  2285.    ;;    
  2286.    If [Reg_SchoolId] = BlankString
  2287.       ExamineTextFile ShadowDirectory\School.Dat
  2288.         [Reg_SchoolId] := SettingFor  [Reg_SchoolIdX]
  2289.       ForgetTextFile
  2290.    EndIf
  2291.  
  2292.    [Reg_IAttempt]  := F
  2293.  
  2294. If WindowsVersion > 3.11
  2295.    [Reg_InstallOS] := W95
  2296.   Else
  2297.    [Reg_InstallOS] := WIN
  2298. EndIf
  2299.  
  2300.  
  2301. If [Reg_CBLawReview] = 1 
  2302.    [Reg_CBLawReviewYN] := Y
  2303.   Else
  2304.    [Reg_CBLawReviewYn] := N
  2305. EndIf
  2306.  
  2307. If [Reg_CBLawReview1] = 1 
  2308.    [Reg_CBLawReview1YN] := Y
  2309.   Else
  2310.    [Reg_CBLawReview1Yn] := N
  2311. EndIf
  2312.  
  2313.    Do CharFilter
  2314.  
  2315.    AppendFile [WindowsDirectory]\LNForms.Dat
  2316.      LnId=[Reg_LnId]      
  2317.      FName=[Reg_FName]     
  2318.      LName=[Reg_LName]   
  2319.      MName=[Reg_MName]     
  2320.      Addr1=[Reg_Addr1]     
  2321.      Addr2=[Reg_Addr2]     
  2322.      City=[Reg_City]      
  2323.      State=[Reg_State]     
  2324.      Zip=[Reg_Zip]       
  2325.      Phone=[Reg_Phone]     
  2326.      RegH_Addr1=[RegH_Addr1]
  2327.      RegH_Addr2=[RegH_Addr2]
  2328.      RegH_City=[RegH_City]
  2329.      RegH_State=[RegH_State]
  2330.      RegH_Zip=[RegH_Zip]
  2331.      RegH_Phone=[RegH_Phone]
  2332.      SchoolId=[Reg_SchoolId]  
  2333.      GradYear=[Reg_GradYear]
  2334.      Member=[Reg_OSFRb]
  2335.      LawReviewYn=[Reg_CBLawReviewYn]
  2336.      MootCourtYn=[Reg_CBLawReview1Yn]  
  2337.      EMail=[Reg_EMail]     
  2338.      Media=[Reg_Media]     
  2339.      InstallOS=[Reg_InstallOS]
  2340.      SoftwareVersion=[Version_Number]
  2341.      ProductId=[Product_ID]
  2342.      CCNo=[Reg_CCNo]      
  2343.      ExpDate=[Reg_ExpDate]   
  2344.  
  2345.      [Internal Variables]
  2346.      OSFRB=[Reg_OSFRb]
  2347.      IAttempt=[Reg_IAttempt] 
  2348.      ExpMonth=[Exp_Month]
  2349.      ExpYear=[Exp_Year]   
  2350.      RegSchoolIdX=[Reg_SchoolIdX]
  2351.      LawReview=[Reg_CBLawReview]
  2352.      MootCourt=[Reg_CBLawReview1]  
  2353.      DownLoad=N
  2354.      IDir=[InstallationDirectory]
  2355.      PVL=[Product_File]
  2356.    EndAppendFile
  2357.  
  2358. ;;   If [Reg_OSFRb] > 1
  2359. ;;      [Reg_GradYear] := BlankString
  2360. ;;      [Reg_CBLawReview] := 0
  2361. ;;      [Reg_CBLawReview1] := 0
  2362. ;;   EndIf
  2363.  
  2364. EndIf
  2365.  
  2366. EndProcedure
  2367. Procedure RegUser_Check
  2368. SetMouseCursor Wait
  2369.  
  2370. EnableWindow RegScreen.Back Off
  2371. EnableWindow RegScreen.RegCheck Off
  2372. EnableWindow RegScreen.RegCancel Off
  2373. EnableWindow RegScreen.Pb_HomeAddr Off
  2374.  
  2375. ;;LoadBitMap 13 ShadowDirectory\OneM.BMP
  2376. ;;TextOut OnBitMap 13 @xy(60,25) Validating Registration Form ...
  2377. ;;DialogBox OneM @xy(CenterScreen,CenterScreen) 177 35 Returns [Dialog_Rc] BlackOnWhite UseHeader " One Moment Please " Delay 2000
  2378. ;;      Font "MS Sans Serif" 8
  2379. ;;      Bitmap @xy(0,0) Bitmap 13
  2380. ;;EndDialogBox
  2381. UpdateWindow
  2382. ClearScreen
  2383. Delay 1
  2384. LoadBitMap 13 ShadowDirectory\OneM.BMP
  2385. ShowBitMap 13 @xy(Center,Center)
  2386. Delay 1
  2387. TextOut @xy(Center,Center) Validating Registration Form ...
  2388.  
  2389. SetMouseCursor Wait
  2390.  
  2391. ;;CreateBitMap 5 300 75
  2392. ;;Rectangle @xy(0,0) @xy(300,75) OnBitMap 5
  2393. ;;CopyPixels 200 100 OnBitMap 5 to @xy(300,200) 
  2394.  
  2395. ClearArray [RegUser_Data]
  2396. [RegUser_Count] := 0
  2397.  
  2398. ;; ----------------------------------
  2399. ;; Verify lexis nexis id
  2400. ;;
  2401. If ([Reg_GradYear] < 1999 .And. [Reg_OSFRb] = 1) .OR. [Reg_OSFRb] > 1 .OR. [Reg_LnId] <> BlankString
  2402.   If [Reg_LnId] = BlankString
  2403.     IncrementNumber [RegUser_Count]
  2404.     [RegUser_Data][[RegUser_Count]] := LEXIS-NEXIS ID (No data entered)
  2405.     Goto Verify_FName
  2406.   EndIf
  2407. [StrCheck_String] := [Reg_LnId]
  2408. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
  2409. [StrCheck_Mask]   := BlankString
  2410. [StrCheck_Rc]     := 0
  2411. Do StrCheck
  2412. If [StrCheck_Rc] > 0
  2413.    IncrementNumber [RegUser_Count]
  2414.    [RegUser_Data][[RegUser_Count]] := LEXIS-NEXIS ID (A-Z,0-9) only!
  2415.    Goto Verify_FName
  2416. EndIf
  2417. [NUmber29] := LengthOf [Reg_LnId]
  2418.  If [NUmber29] <> 7
  2419.    IncrementNumber [RegUser_Count]
  2420.    [RegUser_Data][[RegUser_Count]] := LEXIS-NEXIS ID (7 characters) only!
  2421.    Goto Verify_FName
  2422.  EndIf
  2423. EndIf
  2424.  
  2425. ;; ----------------------------------
  2426. ;; Verify First name
  2427. ;;
  2428. :Verify_FName
  2429. If [Reg_FName] = BlankString
  2430.    IncrementNumber [RegUser_Count]
  2431.    [RegUser_Data][[RegUser_Count]] := First Name (No data entered)
  2432.    Goto Verify_LName
  2433. ENdIf
  2434. [StrCheck_String] := [Reg_FName]
  2435. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  2436. [StrCheck_Mask]   := BlankString
  2437. [StrCheck_Rc]     := 0
  2438. Do StrCheck
  2439. If [StrCheck_Rc] > 0
  2440.    IncrementNumber [RegUser_Count]
  2441.    [RegUser_Data][[RegUser_Count]] := First Name (A-Z,Space) only!
  2442. EndIf
  2443.  
  2444. ;; ----------------------------------
  2445. ;; Verify Middle Initial
  2446. ;;
  2447. :Verify_MI
  2448. [StrCheck_String] := [Reg_MName]
  2449. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  2450. [StrCheck_Mask]   := BlankString
  2451. [StrCheck_Rc]     := 0
  2452. Do StrCheck
  2453. If [StrCheck_Rc] > 0
  2454.    IncrementNumber [RegUser_Count]
  2455.    [RegUser_Data][[RegUser_Count]] := Middle Initial (A-Z,Space) only!
  2456. EndIf
  2457.  
  2458. ;; ----------------------------------
  2459. ;; Verify last name
  2460. ;;
  2461. :Verify_LName
  2462. If [Reg_LName] = BlankString
  2463.    IncrementNumber [RegUser_Count]
  2464.    [RegUser_Data][[RegUser_Count]] := Last Name (No data entered)
  2465.    Goto Verify_Addr1
  2466. EndIf
  2467. [StrCheck_String] := [Reg_LName]
  2468. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ- "
  2469. [StrCheck_Mask]   := BlankString
  2470. [StrCheck_Rc]     := 0
  2471. Do StrCheck
  2472. If [StrCheck_Rc] > 0
  2473.    IncrementNumber [RegUser_Count]
  2474.    [RegUser_Data][[RegUser_Count]] := Last Name (A-Z,Space) only! 
  2475. EndIf
  2476.  
  2477. ;; ----------------------------------
  2478. ;; Verify address information
  2479. ;;
  2480. :Verify_Addr1
  2481. If [Reg_Addr1] = BlankString .And. [Reg_Addr1] = BlankString
  2482.    IncrementNumber [RegUser_Count]
  2483.    [RegUser_Data][[RegUser_Count]] := Address (No data entered)
  2484.    Goto Verify_City
  2485. EndIf
  2486. [StrCheck_String] := [Reg_Addr1][Reg_Addr2]
  2487. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789-.,#"
  2488. [StrCheck_Mask]   := BlankString
  2489. [StrCheck_Rc]     := 0
  2490. Do StrCheck
  2491. If [StrCheck_Rc] > 0
  2492.    IncrementNumber [RegUser_Count]
  2493.    [RegUser_Data][[RegUser_Count]] := Address (A-Z,Space,-.,#) only!
  2494. EndIf
  2495.  
  2496. ;; ----------------------------------
  2497. ;; Verify City information
  2498. ;;
  2499. :Verify_City
  2500. If [Reg_City] = BlankString
  2501.    IncrementNumber [RegUser_Count]
  2502.    [RegUser_Data][[RegUser_Count]] := City (No data entered)
  2503.    Goto Verify_State
  2504. EndIf
  2505. [StrCheck_String] := [Reg_City]
  2506. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  2507. [StrCheck_Mask]   := BlankString
  2508. [StrCheck_Rc]     := 0
  2509. Do StrCheck
  2510. If [StrCheck_Rc] > 0
  2511.    IncrementNumber [RegUser_Count]
  2512.    [RegUser_Data][[RegUser_Count]] := City (A-Z,Space) only!
  2513. EndIf
  2514.  
  2515. ;; ----------------------------------
  2516. ;; Verify State information
  2517. ;;
  2518. :Verify_State
  2519. If [Reg_State] = BlankString
  2520.    IncrementNumber [RegUser_Count]
  2521.    [RegUser_Data][[RegUser_Count]] := State (No data entered)
  2522.    Goto Verify_Zip
  2523. EndIf
  2524. [StrCheck_String] := [Reg_State]
  2525. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  2526. [StrCheck_Mask]   := BlankString
  2527. [StrCheck_Rc]     := 0
  2528. Do StrCheck
  2529. If [StrCheck_Rc] > 0
  2530.    IncrementNumber [RegUser_Count]
  2531.    [RegUser_Data][[RegUser_Count]] := State (A-Z) only!
  2532. EndIf
  2533.  
  2534. ;; ----------------------------------
  2535. ;; Verify Zip information
  2536. ;;
  2537. :Verify_Zip
  2538. [NUmber29] := LengthOf [Reg_Zip]
  2539. If [NUmber29] <> 5
  2540.    IncrementNumber [RegUser_Count]
  2541.    [RegUser_Data][[RegUser_Count]] := Zip Code (5 digits required)
  2542.    Goto Verify_Phone
  2543. EndIf
  2544. If [Reg_Zip] = BlankString
  2545.    IncrementNumber [RegUser_Count]
  2546.    [RegUser_Data][[RegUser_Count]] := Zip Code (No data entered)
  2547.    Goto Verify_Phone
  2548. EndIf
  2549. [StrCheck_String] := [Reg_Zip]
  2550. [StrCheck_Valid]  := "0123456789-"
  2551. [StrCheck_Mask]   := BlankString
  2552. [StrCheck_Rc]     := 0
  2553. Do StrCheck
  2554. If [StrCheck_Rc] > 0
  2555.    IncrementNumber [RegUser_Count]
  2556.    [RegUser_Data][[RegUser_Count]] := Zip (0-9,-) only!
  2557. EndIf
  2558.  
  2559. ;; ----------------------------------
  2560. ;; Verify Phone information
  2561. ;;
  2562. :Verify_Phone
  2563. [StrCheck_String] := [Reg_Phone]
  2564. [StrCheck_Valid]  := "0123456789-() "
  2565. [StrCheck_Mask]   := BlankString
  2566. [StrCheck_Rc]     := 0
  2567. Do StrCheck
  2568. If [StrCheck_Rc] > 0
  2569.    IncrementNumber [RegUser_Count]
  2570.    [RegUser_Data][[RegUser_Count]] := Phone (0-9,(,),-,Space) only!
  2571. EndIf
  2572.  
  2573. ;; ----------------------------------
  2574. ;; Verify CC Exp Date Entry
  2575. ;;
  2576. :Verify_ExpDate
  2577. If [Exp_Month] = BlankString
  2578.    IncrementNumber [RegUser_Count]
  2579.    [RegUser_Data][[RegUser_Count]] := Expiration Date (No month entered)
  2580. EndIf
  2581.  
  2582. [Number1] := LengthOf [Exp_Year]
  2583. If [Number1] = 0
  2584.    IncrementNumber [RegUser_Count]
  2585.    [RegUser_Data][[RegUser_Count]] := Expiration Date (No year Entered)
  2586. EndIf
  2587.  
  2588. ;; ----------------------------------
  2589. ;; Verify CC 
  2590. ;;
  2591. LoadDll [Dll1] ShadowDirectory\ZClient.Dll
  2592.  
  2593. CallDll [Dll1] HuValidateCCNumber ([Reg_CCNo]) Returns short [Call_Rc]
  2594. SetMouseCursor Arrow
  2595. If [Call_Rc] = 0
  2596.    UnLoadDll [Dll1]
  2597.    IncrementNumber [RegUser_Count]
  2598.    If [Reg_CCNo] = BlankString
  2599.        [RegUser_Data][[RegUser_Count]] := Invalid Credit Card (None)
  2600.    Else
  2601.        [RegUser_Data][[RegUser_Count]] := Invalid Credit Card ([Reg_CCNo])
  2602.  
  2603.    EndIf
  2604. Else 
  2605.    UnLoadDll [Dll1]
  2606. EndIf
  2607.  
  2608. [RegUser_Idx] := LastIndexUsedFor [RegUser_Data]
  2609.  
  2610.  
  2611. ClearScreen
  2612. UnLoadBitMap 13
  2613. Delay 1
  2614. ;;UpdateWindow
  2615.  
  2616. If [RegUser_Idx] > 0
  2617.    ClearArray [Array1]
  2618.    Beep
  2619.    Beep 
  2620.    DialogBox  @xy(Center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Invalid or missing data"  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  2621.       Font "MS Sans Serif" 8
  2622.       Bitmap @xy(8,7) Bitmap 14
  2623.       LText @xy(84,7) 181 30 "One or more required fields have missing or invalid data. Please refer to the list below and make the necessary corrections."
  2624.       LText @xy(84,45) 181 23 "The following fields have missing or invalid data."
  2625.       ListBox @xy(84,55) 160 80 Uses [String28] LoadWith [RegUser_Data]
  2626.       Static @xy(8,140) 269 1 "" BlackRect
  2627.       PushButton @xy(180,145) 45 15 "< &Back " 200
  2628.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  2629.    EndDialogBox
  2630.  
  2631.    If [Dialog_rc] = 300
  2632.       SoLong Quietly
  2633.    EndIf
  2634.  
  2635.    Do Pb_ExitOn
  2636.  
  2637.    Exit
  2638. EndIf
  2639.  
  2640.  
  2641.  
  2642. ;; Password screen
  2643. ;;
  2644. :GetUserPsw
  2645. [Reg_SchoolId] := BlankString
  2646. If "[Reg_SchoolIdX]" = "Other" .And. [Reg_OSFRb] = 4
  2647.  
  2648.     [String1] := BlankString
  2649.  
  2650.     DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 85 Returns [Dialog_Rc] BlackOnWhite UseHeader "Enter Password"
  2651.       Font "MS Sans Serif" 8
  2652.       LText @xy(12,6) 136 30 "Please enter your password. Once you have entered a valid password, click 'OK' to continue."
  2653.       EditText @xy(45,44) 70 12 Uses [String1] PassWord Uppercase
  2654.       PushButton @xy(20,65) 50 15 "Cancel" 200 
  2655.       DefPushButton @xy(87,65) 50 15 "OK" 300 
  2656.     EndDialogBox
  2657.  
  2658.     If [Dialog_Rc] = 200
  2659.        Goto VCC_Display
  2660.     EndIf
  2661.  
  2662.     [String2] := CrcOfString [String1]
  2663.  
  2664.     If [String2] <> E55F
  2665.        Beep
  2666.        Beep
  2667.        Goto GetUserPsw
  2668.       Else
  2669.        [Reg_SchoolId] := 999
  2670.     EndIf
  2671. EndIf
  2672.  
  2673. :VCC_Display
  2674.  
  2675. ;; Verify that the user wants to use the credit card
  2676. ;;
  2677. SetMouseCursor Wait
  2678. [StringS] := Your credit card is about to be charged for [Infobase_Title]. Are you sure you wish to proceed?
  2679.  
  2680. if [Reg_SchoolId] = 999
  2681.    [StringS] := Your credit card will NOT be charged.
  2682.    Goto CC_Check
  2683. EndIf
  2684.  
  2685.  
  2686. :CC_Check
  2687. DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 85 Returns [Dialog_Rc] BlackOnWhite UseHeader "Credit Verification"
  2688.   Font "MS Sans Serif" 8
  2689.   LText @xy(12,6) 136 40 "[StringS]"
  2690.  
  2691.   PushButton @xy(87,60) 50 15 "Submit Order" 300 
  2692.   PushButton @xy(20,60) 50 15 "Cancel Order" 200 
  2693.  
  2694. EndDialogBox
  2695.  
  2696. If [Dialog_Rc] = 200
  2697.    Do Pb_ExitOn
  2698.    Exit
  2699. EndIf
  2700.  
  2701.  
  2702. Exit DismissDialog 
  2703. UpdateWindow
  2704.  
  2705. EndProcedure
  2706. Procedure StrCheck
  2707.  
  2708.  
  2709. ;;[StrCheck_String] := 
  2710. ;;[StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTU"
  2711. ;;[StrCheck_Mask]   := BlankString
  2712. ;;[StrCheck_Rc]     := 0
  2713.  
  2714. SetMouseCursor Wait
  2715.  
  2716. ;; AlphaOnly Check
  2717. [StrCheck_Len] := LengthOf [StrCheck_String]
  2718. [StrCheck_Cnt] := 0
  2719. While [StrCheck_Cnt] < [StrCheck_Len]
  2720.   IncrementNumber [StrCheck_Cnt]
  2721.   [StrCheck_Char] := SubStringOf [StrCheck_String] From [StrCheck_Cnt] to [StrCheck_Cnt]
  2722.   [StrCheck_Chk]  := PositionOf [StrCheck_Char] In [StrCheck_Valid]
  2723.   If [StrCheck_Chk] = 0
  2724.      [StrCheck_Rc] := 1
  2725.      Exit
  2726.   EndIf
  2727. EndWhile
  2728. EndProcedure
  2729. Procedure Check_Views31
  2730. ;;ClearArray [Array1]
  2731. ;;ClearArray [RegUser_Data]
  2732. ;;[RegUser_Count] := 0
  2733. [Invalid_Views] := False
  2734.  
  2735. if [ScanIcons_ExePath] <> BlankString
  2736.    Goto Check_Views31_Ok
  2737. EndIf
  2738.  
  2739. IncrementNumber [RegUser_Count]
  2740. [RegUser_Data][[RegUser_Count]] := Invalid Entry (Must select a listed directory)
  2741.  
  2742.    ClearArray [Array10]
  2743.    Beep
  2744.    Beep 
  2745.    DialogBox  @xy(Center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Invalid or missing data" 
  2746.       Font "MS Sans Serif" 8
  2747.       Bitmap @xy(8,7) Bitmap 14
  2748.       LText @xy(84,7) 181 30 "One or more required fields have missing or invalid data. Please refer to the list below and make the necessary corrections."
  2749.       LText @xy(84,45) 181 23 "The following fields have missing or invalid data."
  2750.       ListBox @xy(84,55) 160 80 Uses [String28] LoadWith [RegUser_Data]
  2751.       Static @xy(8,140) 269 1 "" BlackRect
  2752.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  2753.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  2754.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  2755.    EndDialogBox
  2756.  
  2757.    If [Dialog_rc] = 300
  2758.       SoLong Quietly
  2759.    EndIf
  2760.    [Invalid_Views] := True
  2761.  
  2762. :Check_Views31_Ok
  2763. IF [Invalid_Views] = True
  2764.    Exit
  2765. else
  2766.    [TViewsDir] := PathNameOf [ScanIcons_ExePath]
  2767.    [Invalid_Views] := False
  2768.  
  2769.    if FileExists [TViewsDir]\rightsmn.dll .And. FileExists [TViewsDir]\libstub.dll
  2770.       Exit DismissDialog 
  2771.    else
  2772.       Dialog UserHeader "Missing Required Files"
  2773.       You are missing files that are required for
  2774.       Folio Bound Infobases.  You must reinstall 
  2775.       Folio VIEWS from LEXIS-NEXIS Office for Legal 
  2776.       Education after you complete the current
  2777.       product installation. 
  2778.       EndDialog
  2779.       Exit DismissDialog
  2780.    EndIf
  2781. EndIf
  2782.  
  2783. EndProcedure
  2784. Procedure HomeAddress
  2785.  
  2786. [TRegH_Addr1] := [RegH_Addr1]
  2787. [TRegH_Addr2] := [RegH_Addr2]
  2788. [TRegH_City]  := [RegH_City]
  2789. [TRegH_State] := [RegH_State]
  2790. [TRegH_Zip]   := [RegH_Zip]
  2791. [TRegH_Phone] := [RegH_Phone]
  2792.  
  2793. :Address1
  2794.  
  2795. [Field_Error] := False
  2796.  
  2797. DialogBox HomeScreen @xy(CenterScreen,CenterScreen) 160 135 Returns [Dialog_Rc] BlackOnWhite UseHeader "Permanent Address"
  2798.       Font "MS Sans Serif" 8
  2799.       LText @xy(12,6) 150 40 "Add your permanent mailing address here if your permanent address differs from your current mailing address."
  2800.       LText @xy(12,35) 100 10 "Permanent Address"
  2801.       EditText @xy(12,45) 130 12 Uses [TRegH_Addr1] AutoHScroll Border
  2802.       EditText @xy(12,58) 130 12 Uses [TRegH_Addr2] AutoHScroll Border
  2803.       LText @xy(12,72) 36 10 "City"
  2804.       EditText @xy(12,82) 59 12 Uses [TRegH_City] AutoHScroll Border
  2805.       LText @xy(76,72) 21 10 "State"
  2806.       EditText @xy(76,82) 16 12 Uses [TRegH_State] Border UpperCase
  2807.       LText @xy(100,72) 39 10 "Zip Code"
  2808.       EditText @xy(100,82) 43 12 Uses [TRegH_Zip] Border
  2809.       LText @xy(12,97) 36 10 "Phone"
  2810.       EditText @xy(12,106) 59 12 Uses [TRegH_Phone] AutoHScroll Border
  2811.  
  2812.       PushButton ProcIs HAddr_Check @xy(93,98) 50 15 "OK" 100
  2813.       PushButton @xy(93,115) 50 15 "Cancel" 300 
  2814. EndDialogBox
  2815.  
  2816. if [Field_Error] = True
  2817.    goto Address1
  2818. EndIf
  2819.  
  2820. If [Dialog_Rc] = 100
  2821.      [RegH_Addr1]    := [TRegH_Addr1]
  2822.      [RegH_Addr2]    := [TRegH_Addr2]
  2823.      [RegH_City]     := [TRegH_City]
  2824.      [RegH_State]    := [TRegH_State]
  2825.      [RegH_Zip]      := [TRegH_Zip]
  2826.      [RegH_Phone]    := [TRegH_Phone]
  2827. EndIf
  2828.  
  2829. EndProcedure
  2830. Procedure StudentType
  2831.  
  2832.  
  2833.  
  2834. if [Reg_OSFRb] = 1
  2835.  
  2836.                 EnableWindow RegScreen.CB_GradYear
  2837.                 EnableWindow RegScreen.CB_LawReview
  2838.                 EnableWindow RegScreen.CB_LawReview1
  2839.  
  2840.         else
  2841.  
  2842.                 EnableWindow RegScreen.CB_GradYear Off
  2843.                 EnableWindow RegScreen.CB_LawReview Off
  2844.                 EnableWindow RegScreen.CB_LawReview1 Off
  2845.  
  2846.  [Reg_CBLawReview] := 0
  2847.  [Reg_CBLawReview1] := 0
  2848.  
  2849. Endif
  2850.  
  2851.  
  2852. ;;      if [Reg_OSFRb] = 4 .And. [Reg_SchoolId] = Other
  2853. ;;
  2854. ;;              DialogBox @xy(center,center) 100 86 Returns [PassW] BlackOnLightGray UseHeader "LEXIS-NEXIS Password"
  2855. ;;                Font "MS Sans Serif" 8
  2856. ;;                LText @xy(8,17) 80 30 "Please enter your password:"
  2857. ;;                EditText @xy(12,30) 10 10 Uses [PWord] Border UpperCase PassWord
  2858. ;;                DefPushButton @xy(54,68) 38 14 "OK" 100
  2859. ;;              EndDialogBox
  2860. ;;              
  2861. ;;              Dialog
  2862. ;;                The password is [PWord]
  2863. ;;              EndDialog
  2864. ;;      Endif
  2865. ;; Must encrypt password and set school to 999
  2866. ;;      if [PWord] = EDU
  2867. ;;              Reg_Sl_Number := 999
  2868. ;;              Dialog
  2869. ;;                 Your credit card will NOT be charged.
  2870. ;;              EndDialog
  2871. ;;      else
  2872. ;;              Dialog
  2873. ;;                 Your credit card will be charged.
  2874. ;;              EndDialog
  2875. ;;      Endif
  2876.  
  2877. EndProcedure
  2878. Procedure CreditVer
  2879.  
  2880. DialogBox @xy(100,100) 100 150 UseHeader "Credit Verification" Returns [Credit_Rc]
  2881.   Font "MS Sans Serif" 8
  2882.         LText @xy(8,10) 90 80 "Your credit card is about to be charged for [Infobase_Title]. Once online registration is successful, the final price will be displayed, and installation will proceed." 
  2883.         LText @xy(8,50) 90 80 "Are you sure you wish to proceed?"
  2884.   PushButton @xy(20,95) 50 15 "OK" 200 
  2885.   PushButton @xy(20,95) 50 15 "Cancel" 300 
  2886. EndDialogBox
  2887.  
  2888.  
  2889.  
  2890. EndProcedure
  2891. Procedure OnLine_Check
  2892.  
  2893. If AccessCodeIsValid [Str2]
  2894.  
  2895. ;;   [RC4Key1] := [Str2]
  2896.    
  2897.    [RC4Key1] := AccessCode [Str2]
  2898.  
  2899.    Exit DismissDialog
  2900. EndIf
  2901.  
  2902. Beep
  2903. Beep
  2904.  
  2905. EndProcedure
  2906. Procedure SendData
  2907.  
  2908.  
  2909. :SendData_Init
  2910.  
  2911. SetMouseCursor Wait
  2912.  
  2913. UnLoadBitMap 13
  2914. ClearScreen
  2915. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  2916. ShowBitMap 13 @xy(Center,Center)
  2917. TextOut OnBitMap 13 @xy(60,17) Checking Modem Configuration ...
  2918.  
  2919. UpdateWindow
  2920.  
  2921. [LdError] := 0
  2922.  
  2923. :Init_Dll
  2924. [LdError] := 0
  2925. [String1] := ShadowDirectory
  2926. If FileIsInUse [String1]\ZClient.Dll 
  2927.  
  2928.    If [LdError] < 5
  2929.       IncrementNumber [LdError]
  2930.       LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  2931.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  2932.       UnLoadDll [Dll1]
  2933.       UnLoadDll [Dll1]
  2934.       Goto Init_Dll
  2935.    EndIf
  2936.  
  2937.    [Err_Desc] := 'Communications DLL init Failure'
  2938.    [Err_Text] := The communications DLL has failed to init properly. You select 'Re-Try' or reboot your system to clear this condition.
  2939.    do ErrorMsg
  2940.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2941.          Exit
  2942.       EndIf
  2943.       If [Dialog_Rc] = 200
  2944.          LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  2945.          CallDll [Dll1] Terminate() Returns short [Call_Rc]
  2946.          UnLoadDll [Dll1]
  2947.          UnLoadDll [Dll1]
  2948.          Goto SendData_Init
  2949.       EndIf
  2950.  
  2951. EndIf
  2952.  
  2953. LoadDll [Dll1] ShadowDirectory\ZClient.Dll 
  2954. If DllError <> 0
  2955.    UnLoadBitMap 13
  2956.    ClearScreen
  2957.    [Err_Desc] := 'Communications DLL load Failure'
  2958.    [Err_Text] := The communications DLL has failed to load properly. You can select 'Re-Try' or reboot your system to clear this condition.
  2959.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  2960.    do ErrorMsg
  2961.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2962.       Exit
  2963.    EndIf
  2964.    If [Dialog_Rc] = 200
  2965.       Goto SendData_Init
  2966.    EndIf
  2967. EndIf
  2968.  
  2969. CallDll [Dll1] AutoDetectPort () Returns short [Call_Rc]
  2970. If [Call_Rc] <> 0
  2971.    UnLoadDll [Dll1]  
  2972.    UnLoadBitMap 13
  2973.    [String1] := 'Error initializing communications. ([Call_Rc])'
  2974.    [Err_Desc] := [String1]
  2975.    [Err_Text] := Make sure that your modem, phone line, and cable are properly connected. Verify that your modem has been reset before attempting 'ReTry'.
  2976.    do ErrorMsg
  2977.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  2978.       Exit
  2979.    EndIf
  2980.    If [Dialog_Rc] = 200
  2981.       Goto SendData_Init
  2982.    EndIf
  2983. EndIf
  2984.  
  2985. UnLoadBitMap 13
  2986. ;;ClearScreen
  2987. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  2988. ShowBitMap 13 @xy(Center,Center)
  2989. TextOut OnBitMap 13 @xy(60,17) Dialing the LEXIS-NEXIS
  2990. TextOut OnBitMap 13 @xy(60,33) Online Registration Service ...
  2991. UpdateWindow
  2992.  
  2993. CallDll [Dll1] DialNumber ([Dial_Number]) Returns short [Call_Rc]
  2994. If [Call_Rc] = -101
  2995.    UnLoadDll [Dll1]  
  2996.    UnLoadBitMap 13
  2997.    ClearScreen
  2998.    Do LineBusy
  2999.    If [Dialog_Rc] = 300
  3000.       Exit
  3001.    EndIf
  3002.    Goto SendData_Init
  3003. EndIf
  3004.  
  3005. If [Call_Rc] <> 0
  3006.    [Err_Desc] := 'Error while dialing number.([Call_Rc])'
  3007.    [Err_Text] := Unable to connect to the LEXIS-NEXIS Online Registration Service. Please make sure that your modem is configured properly and able to connect to an outside phone line.
  3008.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3009.    UnLoadDll [Dll1]   
  3010.    UnLoadBitMap 13
  3011.    do ErrorMsg
  3012.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3013.       Exit
  3014.    EndIf
  3015.    If [Dialog_Rc] = 200
  3016.       Goto SendData_Init
  3017.    EndIf
  3018. EndIf
  3019.  
  3020. UnLoadBitMap 13
  3021. ClearScreen
  3022. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  3023. ShowBitMap 13 @xy(Center,Center)
  3024. TextOut OnBitMap 13 @xy(60,17) Signing on to LEXIS-NEXIS
  3025. TextOut OnBitMap 13 @xy(60,33) Online Registration Service ...
  3026. UpdateWindow
  3027.  
  3028. [String1] := Lexis Nexis
  3029. CallDll [Dll1] LoginSequence ([String1]) Returns short [Call_Rc]
  3030.  
  3031. If [Call_Rc] <> 0
  3032.    [Err_Desc] := 'Server LoginSequence Error'
  3033.    [Err_Text] := Unable to login to server. Unknown errors while attempting to login.
  3034.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3035.    UnLoadDll [Dll1]  
  3036.    do ErrorMsg
  3037.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3038.       Exit
  3039.    EndIf
  3040.    If [Dialog_Rc] = 200
  3041.       Goto SendData_Init
  3042.    EndIf
  3043. EndIf
  3044.  
  3045. [String1] := R   ;; Payware=R ;; EEF=E
  3046. CallDll [Dll1] StartMenuSequence ([String1]) Returns short [Call_Rc]
  3047.  
  3048. If [Call_Rc] <> 0
  3049.    [Err_Desc] := 'Server StartMenuSequence Error'
  3050.    [Err_Text] := Unable to start server menu. Unknown errors occurred while starting a transaction.
  3051.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3052.    UnLoadDll [Dll1]
  3053.    do ErrorMsg
  3054.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3055.       Exit
  3056.    EndIf
  3057.    If [Dialog_Rc] = 200
  3058.       Goto SendData_Init
  3059.    EndIf
  3060. EndIf
  3061.  
  3062. ;; Load Senddata
  3063.  
  3064. SetTokenDelimiterTo ,
  3065. [S_Count] := 0
  3066. [S_Text]  := BlankString
  3067.  
  3068. UnLoadBitMap 13
  3069. ClearScreen
  3070. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  3071. ShowBitMap 13 @xy(Center,Center)
  3072. TextOut OnBitMap 13 @xy(60,25) Processing Online Registration Form ...
  3073. UpdateWindow
  3074.  
  3075. ClearArray [Array1]
  3076. [Array1] := [WindowsDirectory]\LNForms.Dat
  3077.  
  3078. ;;GetMenuChoice
  3079. ;;[Array1]
  3080. ;;EndGetMenuChoice
  3081.  
  3082. [Number1] := 0
  3083. [Number2] := LastIndexUsedFor [Array1]
  3084. [S_Count] := 0
  3085. SetTokenDelimiterTo =
  3086. ExamineTextFile [WindowsDirectory]\LNForms.Dat
  3087. [S_Text]  := BlankString
  3088. [Ts_Text] := Go!!
  3089.  
  3090. [Dialog_Rc] := 0
  3091.  
  3092. While [TS_text] <> BlankString
  3093.   IncrementNumber [S_Count]
  3094.   [TS_text] := Token 1 Of [Array1][[S_Count]]
  3095.   [String1] := Token 2 Of [Array1][[S_Count]]
  3096.  
  3097.   If [TS_text] = BlankString
  3098.      [S_Text] := ""<END>""
  3099.     Else
  3100.      [String2] := SettingFor [TS_text]
  3101.      [S_Text]  := ""[String2]""
  3102.   EndIf
  3103.  
  3104.   :SendData_Retry
  3105.   CallDll [Dll1] SendString ([S_Text]) Returns short [Call_Rc]
  3106.   If [Call_Rc] <> 0
  3107.      [Err_Desc] := 'SendString Error'
  3108.      [Err_Text] := An error occurred while sending data to the server.
  3109.      CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3110.      UnLoadDll [Dll1]
  3111.      UnLoadBitMap 13
  3112.      do ErrorMsg
  3113.      If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3114.         Exit
  3115.      EndIf
  3116.      If [Dialog_Rc] = 200 
  3117.         Goto SendData_Init
  3118.      EndIf
  3119.   EndIf
  3120.  
  3121. EndWhile 
  3122.  
  3123. UnLoadBitMap 13
  3124. LoadBitMap 13 ShadowDirectory\OneM.Bmp
  3125. ShowBitMap 13 @xy(Center,Center)
  3126. TextOut OnBitMap 13 @xy(60,25) Processing Credit Card ...
  3127.  
  3128. ;; Execute (S1) option code if enabled, no download required
  3129. ;; normal installation
  3130. ;; -------------------------------
  3131. ;;
  3132. If [Call_Rc] = 0 .And. [Reg_Media] <> D
  3133.  
  3134.    :GetKey 
  3135.    ;; Set instance code information and GetKey
  3136.    ;; 
  3137. ;;   [String1] := [Product_ID][Product_File]
  3138. ;;   SetProductClassTo "[String1]"  ;; required
  3139.  
  3140.    SetProductClassTo "SUPER PROGRAM II"  ;; required
  3141.    [String2]  := InstanceCode
  3142.    [S_Text]   := ""[String2]"" 
  3143.    ;; pad marker  "123456789012"
  3144.    [String1]  := ""            "" 
  3145.    [String30] := BlankString
  3146.  
  3147.    CallDll [Dll1] GetKey ([S_Text],[String1]) Returns short [Call_Rc]
  3148.  
  3149.    If [Call_Rc] <> 0
  3150.       [Err_Desc] := 'Access Code Error ([Call_Rc])'
  3151.       [Err_Text] := Error occurred while retrieving an access code from the server.
  3152.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3153.       UnLoadDll [Dll1]  
  3154.       UnLoadBitMap 13
  3155.       do ErrorMsg
  3156.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3157.          Exit
  3158.       EndIf
  3159.       If [Dialog_Rc] = 200 
  3160.          Goto SendData_Init
  3161.       EndIf
  3162.    EndIf 
  3163.  
  3164.    If AccessCodeIsValid [String1]
  3165.       [RC4Key1] := AccessCode [String1]
  3166.      Else
  3167.       [Err_Desc] := 'Invalid Access Code Error'
  3168.       [Err_Text] := The access code [String1], as returned from the server is not a valid key.
  3169.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3170.       UnLoadDll [Dll1]  
  3171.       UnLoadBitMap 13
  3172.       do ErrorMsg
  3173.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3174.          Exit
  3175.       EndIf
  3176.       If [Dialog_Rc] = 200 
  3177.          Goto SendData_Init
  3178.       EndIf
  3179.  
  3180.    EndIf
  3181.  
  3182.    ;; New price request handling code
  3183. ;; Start here
  3184. [Parse_Str] := [Price]
  3185. [Parse_Char] := "."
  3186. Do Parse
  3187.  
  3188. [String30] := [Parse_Tokens][1]
  3189. [String31] := [Parse_Tokens][2]
  3190. [Number32] := [String30][String31]
  3191. ;;PopUp [Number32]
  3192.  
  3193.    ;; Get price request and process credit card 
  3194.    ;;
  3195.    [S_Text] := ""<PR>""
  3196.                ;;123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+
  3197.    [String1] := "    "
  3198.    [String2] := "                                                                                "
  3199.    CallDll [Dll1] PriceRequest([String1],[String2],[Number32] As Short) Returns Short [Call_Rc]
  3200.  
  3201.    ;;[Call_Rc] := 1   ;; TestLine
  3202.  
  3203.    ;;[String1] = 13 msg, continue
  3204.    ;;          = 14 msg, cancel
  3205.  
  3206. ;; New price request handling code
  3207. ;; End here 
  3208.  
  3209.    Do Price_Check
  3210.  
  3211.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3212.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3213.        UnLoadDll [Dll1]  
  3214.        UnLoadBitMap 13
  3215.        do ErrorMsg
  3216.        Exit
  3217.     EndIf
  3218.     If [Dialog_Rc] = 200 
  3219.        Goto SendData_Init
  3220.     EndIf
  3221.  
  3222.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3223.    UnLoadDll [Dll1]
  3224.    ClearScreen
  3225.    UnLoadBitMap 13
  3226.    Do FinalPrice
  3227.  
  3228. EndIf
  3229.  
  3230. ;; Execute download (S4) option code if enabled
  3231. ;; -------------------------------
  3232. If [Reg_Media] = D
  3233.  
  3234.    :DownLoad_Retry
  3235.    ;; File will be placed into [InstallFromDirectory] location
  3236.    ;;
  3237.    [C_Dir] := [InstallFromDirectory]      
  3238.    [T_Dir] := [InstallationDirectory]
  3239.    CreateDirectoryIfNecessary [T_Dir]
  3240.    
  3241.    [Number1] := MainWindowHandle
  3242.    UnLoadBitMap 13
  3243.  
  3244.    CallDll [Dll1] DownLoadFile ([Number1] As Short,[T_Dir]) Returns short [Call_Rc]
  3245.  
  3246.    If [Call_Rc] <> 0
  3247.       [Err_Desc] := 'File Download Error ([Call_Rc])'
  3248.       [Err_Text] := Error during file download.
  3249.  
  3250.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3251.       UnLoadDll [Dll1]  
  3252.       UnLoadBitMap 13
  3253.       do ErrorMsg
  3254.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3255.          Exit
  3256.       EndIf
  3257.       If [Dialog_Rc] = 200 
  3258.          Goto SendData_Init
  3259.       EndIf
  3260.    EndIf 
  3261.  
  3262.    ;; needed for download only
  3263.    CallDLL [DLL1] ClearBuffers()
  3264.  
  3265.    ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp
  3266.       AddOrChangeLineWith (DownLoad=,,) As "DownLoad=Y" At End
  3267.    EndModifyTextFile
  3268.  
  3269.    :S4_GetKey 
  3270.    ;; Set instance code information and GetKey
  3271.    ;; 
  3272. ;;   [String1] := [Product_ID][Product_File]
  3273. ;;   SetProductClassTo "[String1]"  ;; required
  3274.  
  3275.    SetProductClassTo "SUPER PROGRAM II"  ;; required
  3276.    [String2]  := InstanceCode
  3277.    [S_Text]   := ""[String2]"" 
  3278.    ;; pad marker  "123456789012"
  3279.    [String1]  := ""            "" 
  3280.  
  3281.    [String30] := "D"
  3282.    Delay 1000   
  3283.    CallDll [Dll1] GetKey ([S_Text],[String1]) Returns short [Call_Rc]
  3284.  
  3285.    If [Call_Rc] <> 0
  3286.       [Err_Desc] := 'Access Code Error ([Call_Rc])'
  3287.       [Err_Text] := Error occurred while retrieving an access code from the server.
  3288.  
  3289.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3290.       UnLoadDll [Dll1]  
  3291.  
  3292.       UnLoadBitMap 13
  3293.       do ErrorMsg
  3294.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3295.          Exit
  3296.       EndIf
  3297.       If [Dialog_Rc] = 200 
  3298.          Goto SendData_Init
  3299.       EndIf
  3300.    EndIf 
  3301.  
  3302.    If AccessCodeIsValid [String1]
  3303.       [RC4Key1] := AccessCode [String1]
  3304.      Else
  3305.       [Err_Desc] := 'Invalid Access Code Error ([Call_Rc])'
  3306.       [Err_Text] := The access code [String1], as returned from the server is not a valid key.
  3307.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3308.       UnLoadDll [Dll1]
  3309.  
  3310.       UnLoadBitMap 13
  3311.       do ErrorMsg
  3312.       If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3313.          Exit
  3314.       EndIf
  3315.       If [Dialog_Rc] = 200 
  3316.          Goto SendData_Init
  3317.       EndIf
  3318.    EndIf
  3319.  
  3320.    ;; New price request handling code
  3321. ;; Start here
  3322. [Parse_Str] := [Price]
  3323. [Parse_Char] := "."
  3324. Do Parse
  3325.  
  3326. [String30] := [Parse_Tokens][1]
  3327. [String31] := [Parse_Tokens][2]
  3328. [Number32] := [String30][String31]
  3329. ;;PopUp [Number32]
  3330.  
  3331.    ;; Get price request and process credit card 
  3332.    ;;
  3333.    [S_Text] := ""<PR>""
  3334.                ;;123456789+123456789+123456789+123456789+123456789+123456789+123456789+123456789+
  3335.    [String1] := "    "
  3336.    [String2] := "                                                                                "
  3337.    CallDll [Dll1] PriceRequest([String1],[String2],[Number32] As Short) Returns Short [Call_Rc]
  3338.  
  3339.    if [Call_Rc] <> 0
  3340.       CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3341.       UnLoadDll [Dll1]  
  3342.  
  3343.       UnLoadBitMap 13
  3344.       do ErrorMsg
  3345.       Exit
  3346.    EndIf
  3347.  
  3348.    ;;[Call_Rc] := 1   ;; TestLine
  3349.  
  3350.    ;;[String1] = 13 msg, continue
  3351.    ;;          = 14 msg, cancel
  3352.  
  3353. ;; New price request handling code
  3354. ;; End here 
  3355.  
  3356.    Do Price_Check
  3357.    If [Dialog_Rc] = 100 .Or. [Dialog_Rc] = 300
  3358.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3359.        UnLoadDll [Dll1]  
  3360.        UnLoadBitMap 13
  3361.        do ErrorMsg
  3362.        Exit
  3363.     EndIf
  3364.     If [Dialog_Rc] = 200 
  3365.        Goto S4_GetKey
  3366.     EndIf
  3367.  
  3368.    CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3369.    UnLoadDll [Dll1]
  3370.  
  3371.    ClearScreen
  3372.    UnLoadBitMap 13
  3373.    Do FinalPrice
  3374.  
  3375.    [InstallFromDirectory] := [T_Dir]
  3376.    InstallSeries [Product_File].PVL
  3377.  
  3378. EndIf
  3379.  
  3380. UnLoadBitMap 13
  3381. ClearScreen
  3382.  
  3383. SetMouseCursor Arrow
  3384. goto FullIns
  3385. exit
  3386.  
  3387. EndProcedure
  3388.  
  3389. Procedure ErrorMsg
  3390.  
  3391. DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 130 Returns [Dialog_Rc] BlackOnWhite UseHeader "Installation Error" 
  3392.   Font "MS Sans Serif" 8
  3393.   LText @xy(5,6) 150 20 "The Automated Installation of [Infobase_Title] was unsuccessful:"
  3394.   LText @xy(9,30) 5 10 "╖"
  3395.   LText @xy(20,30) 140 20 "Press 'Retry' to restart the Automated Installation."
  3396.   LText @xy(9,50) 5 10 "╖"
  3397.   LText @xy(20,50) 140 20 "Press 'Next' to continue with a manual installation."
  3398.   LText @xy(9,70) 5 10 "╖"
  3399.   LText @xy(20,70) 140 20 "Press 'Cancel' to discontinue."
  3400.   PushButton @xy(8,105) 45 15 "Retry"  200
  3401.   PushButton @xy(57,105) 45 15 "Next >" 300 
  3402.   PushButton C_Button ProcIs ExitConfirm @xy(106,105) 45 15 "Cancel" 100
  3403. EndDialogBox
  3404.  
  3405. if [Dialog_Rc] = 100
  3406.    SoLong Quietly
  3407. EndIf
  3408.  
  3409. EndProcedure
  3410.  
  3411.  
  3412. Procedure CharFilter
  3413.  
  3414. [String1] := [Reg_LnId]      
  3415. [Reg_LnId] := SubStringOf [String1] From 1 To 50
  3416.  
  3417. [String1] := [Reg_FName]       
  3418. [Reg_FName]  := SubStringOf [String1] From 1 To 50
  3419.  
  3420. [String1] := [Reg_LName]      
  3421. [Reg_LName] := SubStringOf [String1] From 1 To 50
  3422.  
  3423. [String1] := [Reg_MName]     
  3424. [Reg_MName] := SubStringOf [String1] From 1 To 2
  3425.  
  3426. [String1] := [Reg_Addr1]      
  3427. [Reg_Addr1]  := SubStringOf [String1] From 1 To 50
  3428.  
  3429. [String1] := [Reg_Addr2]     
  3430. [Reg_Addr2] := SubStringOf [String1] From 1 To 50
  3431.  
  3432. [String1] := [Reg_City]     
  3433. [Reg_City] := SubStringOf [String1] From 1 To 50
  3434.  
  3435. [String1] := [Reg_State]    
  3436. [Reg_State] := SubStringOf [String1] From 1 To 2
  3437.  
  3438. [String1] := [Reg_Zip]    
  3439. [Reg_Zip] := SubStringOf [String1] From 1 To 5
  3440.  
  3441. [String1] := [Reg_Phone]    
  3442. [Reg_Phone] := SubStringOf [String1] From 1 To 16
  3443.  
  3444. [String1] := [RegH_Addr1]   
  3445. [RegH_Addr1] := SubStringOf [String1] From 1 To 50
  3446.  
  3447. [String1] := [RegH_Addr2]    
  3448. [RegH_Addr2] := SubStringOf [String1] From 1 To 50
  3449.  
  3450. [String1] := [RegH_City]    
  3451. [RegH_City] := SubStringOf [String1] From 1 To 50
  3452.  
  3453. [String1] := [RegH_State]    
  3454. [RegH_State] := SubStringOf [String1] From 1 To 2
  3455.  
  3456. [String1] := [RegH_Zip]   
  3457. [RegH_Zip] := SubStringOf [String1] From 1 To 5
  3458.  
  3459. [String1] := [RegH_Phone]   
  3460. [RegH_Phone] := SubStringOf [String1] From 1 To 16
  3461.  
  3462. [String1] := [Reg_SchoolId]   
  3463. [Reg_SchoolId] := SubStringOf [String1] From 1 To 3
  3464.  
  3465. [String1] := [Reg_GradYear]   
  3466. [Reg_GradYear] := SubStringOf [String1] From 1 To 4
  3467.  
  3468. [String1] := [Reg_Member]   
  3469. [Reg_Member] := SubStringOf [String1] From 1 To 1
  3470.  
  3471. [String1] := [Reg_CBLawReviewYn]   
  3472. [Reg_CBLawReviewYn] := SubStringOf [String1] From 1 To 1
  3473.  
  3474. [String1] := [Reg_CBLawReview1Yn]   
  3475. [Reg_CBLawReview1Yn] := SubStringOf [String1] From 1 To 1
  3476.  
  3477. [String1] := [Reg_EMail]  
  3478. [Reg_EMail] := SubStringOf [String1] From 1 To 80
  3479.  
  3480. [String1] := [Reg_Media]   
  3481. [Reg_Media] := SubStringOf [String1] From 1 To 1
  3482.  
  3483. [String1] := [Reg_InstallOS]  
  3484. [Reg_InstallOS] := SubStringOf [String1] From 1 To 3
  3485.  
  3486. [String1] := [Version_Number]  
  3487. [Version_Number] := SubStringOf [String1] From 1 To 3
  3488.  
  3489. [String1] := [Product_Id]
  3490. [Product_Id] := SubStringOf [String1] From 1 To 20
  3491.  
  3492. [String1] := [Reg_CCNo] 
  3493. [Reg_CCNo] := SubStringOf [String1] From 1 To 50
  3494.  
  3495. [String1] := [Reg_ExpDate] 
  3496. [Reg_ExpDate]  := SubStringOf [String1] From 1 To 5
  3497.  
  3498.  
  3499. EndProcedure
  3500. Procedure DialPreFix
  3501. UpdateWindow
  3502.  
  3503. ;; if [Dial_Prefix]  BlankString
  3504. ;; [String1] := [Dial_Number]
  3505.  
  3506. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Dial Prefix" 
  3507.       Font "MS Sans Serif" 8
  3508.       BitMap @xy(8,8) BitMap 14
  3509.       
  3510.       PushButton @xy(180,145) 45 15 "Next >" 200
  3511.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3512.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3513.       Static @xy(8,140) 269 1 "" BlackRect
  3514.       LText @xy(84,7) 189 40 "You are about to dial into the LEXIS-NEXIS Online Registration Service. This is a TOLL FREE call! If your phone requires a dial prefix in order to reach an outside line, please enter it now."
  3515.       LText @xy(84,71) 50 10 "Dial Prefix:"
  3516.       EditText @xy(130,70) 50 12 Uses [Dial_Prefix] AutoHScroll Border
  3517. EndDialogBox
  3518.  
  3519. [String1] := [Dial_Prefix]
  3520. [String2] := [Orig_Dial_Number]
  3521. [Dial_Number] := [String1][String2]
  3522.  
  3523. If [Dialog_Rc] = 300
  3524.    SoLong Quietly
  3525. EndIf
  3526.  
  3527. EndProcedure
  3528. Procedure FinalPrice
  3529. ;;## Chg final price text for 0.00 stuff
  3530. ;;
  3531.  
  3532. If [Price_Return] > 0
  3533.    [Price_Total] := FormatNumber [Price_Return] Decimal
  3534.    [Price_Desc] := "Credit card number [Reg_CCNo] has been charged a total price of $[Price_Total]."
  3535. EndIf
  3536.  
  3537. If [Price_Return] = 0
  3538.    [Price_Desc] := "Your credit card has not been charged for this transaction."
  3539. EndIf
  3540.  
  3541. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "Total Price" 
  3542.       Font "MS Sans Serif" 8
  3543.       BitMap @xy(8,8) BitMap 14
  3544.       
  3545.       PushButton @xy(180,145) 45 15 "Next >" 200
  3546.       PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  3547.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300 Disabled
  3548.       Static @xy(8,140) 269 1 "" BlackRect
  3549.       LText @xy(84,7) 189 40 "[Price_Desc]"
  3550.  
  3551.       LText @xy(84,70) 190 30 "Click 'Next' to install your purchased product."
  3552. EndDialogBox
  3553.  
  3554. If [Dialog_Rc] = 300
  3555.    SoLong Quietly
  3556. EndIf
  3557.  
  3558. EndProcedure
  3559. Procedure PB_ExitOn
  3560. EnableWindow RegScreen.Back On
  3561.                 EnableWindow RegScreen.RegCheck On
  3562.                 EnableWindow RegScreen.RegCancel On
  3563.                 EnableWindow RegScreen.Pb_HomeAddr On
  3564. EndProcedure
  3565. Procedure NoProducts
  3566. :NoProd_test
  3567. SetTokenDelimiterTo ,
  3568. [Reg_Media] := D
  3569. [String11] := Invalid Product Id - ([Product_File])
  3570.  
  3571. [String10] := BlankString
  3572. [String1] := The PVL file for this installation does not contain an NFO base, or the specified product as specified via -P: is invalid. To install an NFO base product you must do so by selecting from the product list below, or via the command line using -P:{filename_below_with_no_file_extension}.
  3573. [Array2] := FileListFromLibrary *.IDD
  3574.  
  3575. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "[String11]"  ;;F:\VR\SCRIPTS\PROGROUP.DBB
  3576.       Font "MS Sans Serif" 8
  3577.       Static @xy(8,140) 269 1 "" BlackRect
  3578.       PushButton @xy(180,145) 45 15 "Next >" 200 
  3579.       PushButton @xy(136,145) 45 15 "< &Back" 100 Disabled
  3580.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3581.       
  3582.       LText @xy(84,7) 189 70 "[String1]"
  3583.       LText @xy(84,52) 59 12 "Catalog List:"
  3584.    ComboBox @xy(84,62) 191 70 Uses [String10] LoadWith [Array2] Border Sort
  3585. EndDialogBox
  3586.  
  3587. If [Dialog_Rc] = 300
  3588.    SoLong Quietly
  3589. EndIf
  3590.  
  3591. If [Dialog_Rc] = 200
  3592.    If [String10] = BlankString
  3593.       Goto NoProd_test
  3594.    EndIf       
  3595.    [Cat_Select] := BlankString
  3596.    [String1] := [String10]
  3597. EndIf
  3598.  
  3599. EndProcedure
  3600. Procedure HAddr_Check
  3601. ClearArray [RegUser_Data]
  3602. [RegUser_Count] := 0
  3603. [BStr_Count]  := 0
  3604.  
  3605. ;; ----------------------------------
  3606. ;; Verify address information
  3607. ;;
  3608. :Verify_HAddr1
  3609. If [TRegH_Addr1] = BlankString .And. [TRegH_Addr2] = BlankString
  3610.    IncrementNumber [RegUser_Count]
  3611.    [RegUser_Data][[RegUser_Count]] := Home Address (No data entered)
  3612.    IncrementNumber [BStr_Count] 
  3613.    Goto Verify_HCity
  3614. EndIf
  3615. [StrCheck_String] := [TRegH_Addr1][TRegH_Addr2]
  3616. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789-.,"
  3617. [StrCheck_Mask]   := BlankString
  3618. [StrCheck_Rc]     := 0
  3619. Do StrCheck
  3620. If [StrCheck_Rc] > 0
  3621.    IncrementNumber [RegUser_Count]
  3622.    [RegUser_Data][[RegUser_Count]] := Home Address (A-Z,Space,-.,) only!
  3623. EndIf
  3624.  
  3625. ;; ----------------------------------
  3626. ;; Verify City information
  3627. ;;
  3628. :Verify_HCity
  3629. If [TRegH_City] = BlankString
  3630.    IncrementNumber [RegUser_Count]
  3631.    [RegUser_Data][[RegUser_Count]] := City (No data entered)
  3632.    IncrementNumber [BStr_Count]
  3633.    Goto Verify_HState
  3634. EndIf
  3635. [StrCheck_String] := [TRegH_City]
  3636. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ "
  3637. [StrCheck_Mask]   := BlankString
  3638. [StrCheck_Rc]     := 0
  3639. Do StrCheck
  3640. If [StrCheck_Rc] > 0
  3641.    IncrementNumber [RegUser_Count]
  3642.    [RegUser_Data][[RegUser_Count]] := City (A-Z,Space) only!
  3643. EndIf
  3644.  
  3645. ;; ----------------------------------
  3646. ;; Verify State information
  3647. ;;
  3648. :Verify_HState
  3649. If [TRegH_State] = BlankString
  3650.    IncrementNumber [RegUser_Count]
  3651.    [RegUser_Data][[RegUser_Count]] := State (No data entered)
  3652.    IncrementNumber [BStr_Count]
  3653.    Goto Verify_HZip
  3654. EndIf
  3655. [StrCheck_String] := [TRegH_State]
  3656. [StrCheck_Valid]  := "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  3657. [StrCheck_Mask]   := BlankString
  3658. [StrCheck_Rc]     := 0
  3659. Do StrCheck
  3660. If [StrCheck_Rc] > 0
  3661.    IncrementNumber [RegUser_Count]
  3662.    [RegUser_Data][[RegUser_Count]] := State (A-Z) only!
  3663. EndIf
  3664.  
  3665. ;; ----------------------------------
  3666. ;; Verify Zip information
  3667. ;;
  3668. :Verify_HZip
  3669. [NUmber29] := LengthOf [TRegH_Zip]
  3670. If [NUmber29] = 0
  3671.    IncrementNumber [BStr_Count]
  3672. EndIf
  3673. If [NUmber29] <> 5
  3674.    IncrementNumber [RegUser_Count]
  3675.    [RegUser_Data][[RegUser_Count]] := Zip Code (0-9,-) only! Must be 5 digits.
  3676.    Goto Verify_HPhone
  3677. EndIf
  3678. [StrCheck_String] := [TRegH_Zip]
  3679. [StrCheck_Valid]  := "0123456789-"
  3680. [StrCheck_Mask]   := BlankString
  3681. [StrCheck_Rc]     := 0
  3682. Do StrCheck
  3683. If [StrCheck_Rc] > 0
  3684.    IncrementNumber [RegUser_Count]
  3685.    [RegUser_Data][[RegUser_Count]] := Zip Code (0-9,-) only! Must be 5 digits.
  3686. EndIf
  3687.  
  3688. ;; ----------------------------------
  3689. ;; Verify Phone information
  3690. ;;
  3691. :Verify_HPhone
  3692. If [TRegH_Phone] = BlankString
  3693.    IncrementNumber [BStr_Count]
  3694. EndIf
  3695. [StrCheck_String] := [TRegH_Phone]
  3696. [StrCheck_Valid]  := "0123456789-() "
  3697. [StrCheck_Mask]   := BlankString
  3698. [StrCheck_Rc]     := 0
  3699. Do StrCheck
  3700. If [StrCheck_Rc] > 0
  3701.    IncrementNumber [RegUser_Count]
  3702.    [RegUser_Data][[RegUser_Count]] := Phone (0-9,(,),-,Space) only!
  3703. EndIf
  3704.  
  3705. :HAddr_End
  3706. If [BStr_Count] = 5
  3707.    Exit DismissDialog 
  3708. EndIf
  3709.  
  3710. [RegUser_Idx] := LastIndexUsedFor [RegUser_Data]
  3711.  
  3712. ClearScreen
  3713.  
  3714. If [RegUser_Idx] > 0
  3715.  
  3716.    ClearArray [Array1]
  3717.    Beep
  3718.    Beep 
  3719.    UpDateWindow
  3720.    DialogBox  @xy(Center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Permanent Address has missing or invalid data"  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  3721.       Font "MS Sans Serif" 8
  3722.       Bitmap @xy(8,7) Bitmap 14
  3723.       LText @xy(84,7) 181 30 "One or more required fields have missing or invalid data. Please refer to the list below and make the necessary corrections."
  3724.       LText @xy(84,45) 181 23 "The following fields have missing or invalid data."
  3725.       ListBox @xy(84,55) 160 80 Uses [String28] LoadWith [RegUser_Data]
  3726.       
  3727.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  3728.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3729.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3730.       Static @xy(8,140) 269 1 "" BlackRect
  3731.    EndDialogBox
  3732.  
  3733.    If [Dialog_rc] = 300
  3734.       SoLong Quietly
  3735.    EndIf
  3736.  
  3737.    [Field_Error] := True
  3738.   ;; Do Pb_ExitOn
  3739.  
  3740.    Exit
  3741. EndIf
  3742.  
  3743. Exit DismissDialog 
  3744.  
  3745.  
  3746.  
  3747. EndProcedure
  3748. Procedure LineBusy
  3749. SetMouseCursor Wait
  3750. DialogBox RegScreen @xy(CenterScreen,CenterScreen) 160 130 Returns [Dialog_Rc] BlackOnWhite UseHeader "Line Busy" Delay 20000
  3751.    Font "MS Sans Serif" 8
  3752.    LText @xy(12,6) 150 40 "The line is currently busy. An attempt to re-connect will be made every 20 seconds. Select 'Cancel' to abort re-dial."
  3753.    PushButton @xy(93,110) 50 12 "Cancel" 300 
  3754. EndDialogBox
  3755.  
  3756. SetMouseCursor Arrow
  3757.  
  3758.  
  3759. EndProcedure
  3760. Procedure ReStart
  3761. ;;If .Not. FileExists [Rest_IDir]\[Rest_Prod].PVL
  3762. ;;   Exit
  3763. ;;EndIf
  3764. ;;
  3765. ;;[Number25] := RGB(0,0,0)           ;;custom foreground color
  3766. ;;[Number26] := RGB(192,192,192)     ;;custom background color
  3767. ;;
  3768. ;;   DialogBox Restart @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Restart Using Existing Product Library - (*.PVL)"  
  3769. ;;      Font "MS Sans Serif" 8
  3770. ;;      Bitmap @xy(8,7) Bitmap 14
  3771. ;;      LText @xy(84,7)  181 40 "The previous installation was unsucessfull, but the selected product file was sucessfully downloaded. Please select one of the following functions"
  3772. ;;      
  3773. ;;      PushButton @xy(180,145) 45 15 "Next >" 200
  3774. ;;      PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  3775. ;;      PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  3776. ;;      Static @xy(8,140) 269 1 "" BlackRect
  3777. ;;
  3778. ;;      LText @xy(84,62)  181 40 ""
  3779. ;;
  3780. ;;      RadioButtonGroup Uses [Restart_Type]
  3781. ;;         RadioButton @xy(84,52) 150 8 "Install using previously downloaded product file" 
  3782. ;;         RadioButton @xy(84,82) 150 8 "Download new product file."
  3783. ;;   EndDialogBox
  3784. ;;
  3785. ;;If [Dialog_Rc] = 300
  3786. ;;   SoLong Quietly
  3787. ;;EndIf
  3788.  
  3789. EndProcedure
  3790. Procedure ExitConFirm
  3791. If CompletionStatus <> Finished
  3792. [Number25] := RGB(0,0,0)           ;;custom foreground color
  3793. [Number26] := RGB(192,192,192)     ;;custom background color
  3794.  ClearScreen
  3795.  
  3796.    If FileExists ShadowDirectory\etm.bmp
  3797.       LoadBitMap 14 ShadowDirectory\etm.bmp
  3798.  
  3799.     DialogBox ExitProcDialog @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Exit Confirmation"
  3800.       Font "MS Sans Serif" 8
  3801.       Bitmap @xy(8,7) Bitmap 14
  3802.       LText @xy(81,7)  191 50 "You have chosen to exit the LEXIS-NEXIS installation program. The title you have chosen has NOT been installed successfully. Please re-run the install program to install the selected title."
  3803.       
  3804.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  3805.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3806.       PushButton @xy(232,145) 45 15 "Exit" 300
  3807.       Static @xy(8,140) 269 1 "" BlackRect
  3808.     EndDialogBox
  3809.    else
  3810.     DialogBox ExitProcDialog @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "Exit Confirmation"
  3811.       Font "MS Sans Serif" 8
  3812.       LText @xy(81,7)  191 50 "You have chosen to exit the LEXIS-NEXIS installation program. The title you have chosen has NOT been installed successfully. Please re-run the install program to install the selected title."
  3813.       
  3814.       PushButton @xy(180,145) 45 15 "Next >" 200 Disabled
  3815.       PushButton @xy(135,145) 45 15 "< &Back" 100 
  3816.       PushButton @xy(232,145) 45 15 "Exit" 300
  3817.       Static @xy(8,140) 269 1 "" BlackRect
  3818.      EndDialogBox
  3819.    EndIf
  3820.  
  3821.    If [Dialog_Rc] = 300
  3822.       Solong Quietly
  3823.    EndIf
  3824.  
  3825.    Exit
  3826.  
  3827. EndIf
  3828.  
  3829. EndProcedure
  3830. Procedure Price_Check
  3831. If [Call_Rc] < 0
  3832.       [Price_Return] := 0
  3833.    Else     
  3834.     [Price_Return] := [Call_Rc]
  3835. EndIf
  3836.  
  3837.    If [Call_Rc] = 1
  3838.       [Err_Desc] := 'Registration Failure ([Call_Rc])'
  3839.       [Err_Text] := The server may be down or busy.
  3840.  
  3841.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3842.        UnLoadDll [Dll1]  
  3843.        UnLoadDll [Dll1]
  3844.  
  3845.        UnLoadBitMap 13
  3846.       do ErrorMsg
  3847.       Exit
  3848.    EndIf 
  3849.  
  3850.    If [Call_Rc] = 2
  3851.       [Err_Desc] := 'Invalid credit card/exp date ([Call_Rc])'
  3852.       [Err_Text] := The credit card number could not be authorized.
  3853.  
  3854.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3855.        UnLoadDll [Dll1]  
  3856.        UnLoadDll [Dll1]
  3857.  
  3858.        UnLoadBitMap 13
  3859.       do ErrorMsg
  3860.     Exit
  3861.    EndIf 
  3862.  
  3863.    If [Call_Rc] = 3
  3864.       [Err_Desc] := 'Unable to process credit card ([Call_Rc])'
  3865.       [Err_Text] := The credit card number could not be authorized.
  3866.  
  3867.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3868.        UnLoadDll [Dll1]  
  3869.        UnLoadDll [Dll1]
  3870.  
  3871.        UnLoadBitMap 13
  3872.       do ErrorMsg
  3873.        Exit
  3874.    EndIf 
  3875.  
  3876.    If [Call_Rc] = 4
  3877.       [Err_Desc] := 'Unable to process credit info ([Call_Rc])'
  3878.       [Err_Text] := Unable to process credit information.
  3879.  
  3880.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3881.        UnLoadDll [Dll1]  
  3882.        UnLoadDll [Dll1]
  3883.  
  3884.        UnLoadBitMap 13
  3885.       do ErrorMsg
  3886.        Exit
  3887.    EndIf 
  3888.  
  3889.    If [Call_Rc] = 10
  3890.       [Err_Desc] := 'Server database is down or not online ([Call_Rc])'
  3891.       [Err_Text] := The database cannot be accessed at this time.
  3892.  
  3893.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3894.        UnLoadDll [Dll1]  
  3895.        UnLoadDll [Dll1]
  3896.  
  3897.        UnLoadBitMap 13
  3898.       do ErrorMsg
  3899.        Exit
  3900.    EndIf 
  3901.  
  3902.    If [Call_Rc] = 11
  3903.       [Err_Desc] := 'Credit Card denied (Call_Rc])'
  3904.       [Err_Text] := Credit card is invalid, and cannot be charged.
  3905.  
  3906.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3907.        UnLoadDll [Dll1]  
  3908.        UnLoadDll [Dll1]
  3909.  
  3910.        UnLoadBitMap 13
  3911.       do ErrorMsg
  3912.        Exit
  3913.    EndIf 
  3914.  
  3915.    If [Call_Rc] = 12
  3916.       [Err_Desc] := 'Invalid ProductId ([Call_Rc])'
  3917.       [Err_Text] := The current productId is invalid.
  3918.  
  3919.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3920.        UnLoadDll [Dll1]  
  3921.        UnLoadDll [Dll1]
  3922.  
  3923.        UnLoadBitMap 13
  3924.       do ErrorMsg
  3925.        Exit
  3926.    EndIf 
  3927.  
  3928.    ;;[String1] = 13 msg, continue
  3929.    ;;          = 14 msg, cancel
  3930.  
  3931.    [String29] := 13
  3932.    If "[String1]" = "[String29]" 
  3933.  
  3934.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3935.        UnLoadDll [Dll1]  
  3936.        UnLoadDll [Dll1]
  3937.  
  3938.        UnLoadBitMap 13
  3939.       Do SvrMessage
  3940.    EndIf
  3941.  
  3942.    [String29] := 14
  3943.    If "[String1]" = "[String29]"      
  3944.        CallDll [Dll1] Terminate() Returns short [Call_Rc]
  3945.        UnLoadDll [Dll1]  
  3946.        UnLoadDll [Dll1]
  3947.  
  3948.        UnLoadBitMap 13
  3949.       Do NoInstall 
  3950.    EndIf
  3951.  
  3952. EndProcedure
  3953.  
  3954.  
  3955. Procedure NoInstall
  3956. UnloadBitmap 13
  3957. ClearScreen
  3958. :NoInstall_Beg
  3959.  
  3960. [Reg_IAttempt] := C
  3961. ModifyTextFile [WindowsDirectory]\LNForms.Dat NoBackUp Quietly
  3962.  AddOrChangeLineWith (IAttempt=,,) As "IAttempt=[Reg_IAttempt]" At End
  3963. EndModifyTextFile
  3964.  
  3965. [ByeBye_Desc]  := The installation of '[Infobase_Title]' cannot continue. See the server message below for more information.
  3966. [ByeBye_Desc1] := [String2]
  3967.  
  3968. SetCompletionStatusTo Finished
  3969.  
  3970. DialogBox  @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader " Cannot continue Installation "  
  3971.   Font "MS Sans Serif" 8
  3972.   BitMap @xy(8,7) BitMap 14
  3973.   LText @xy(83,7) 190 100 "[ByeBye_Desc]"
  3974.   LText @xy(83,47) 190 70 "[ByeBye_Desc1]"
  3975.   PushButton @xy(230,145) 45 15 "Finish" 200
  3976.   Static @xy(8,140) 269 1 "" BlackRect
  3977. EndDialogBox
  3978.  
  3979. SoLong Quietly
  3980.  
  3981.  
  3982. EndProcedure
  3983. Procedure SvrMessage
  3984. ClearScreen
  3985.  
  3986. [ByeBye_Desc]  := During the installation of '[Infobase_Title]' a message was received from the server. See the server message below for more information.
  3987. [ByeBye_Desc1] := [String2]
  3988.  
  3989. SetCompletionStatusTo Finished
  3990.  
  3991. DialogBox  @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader " Installation Note "  
  3992.   Font "MS Sans Serif" 8
  3993.   BitMap @xy(8,7) BitMap 14
  3994.   LText @xy(83,7) 190 100 "[ByeBye_Desc]"
  3995.   LText @xy(83,47) 190 70 "[ByeBye_Desc1]"
  3996.   PushButton @xy(230,145) 45 15 "Continue" 200
  3997.   Static @xy(8,140) 269 1 "" BlackRect
  3998. EndDialogBox
  3999.  
  4000.  
  4001.  
  4002. EndProcedure
  4003. Procedure Product_License
  4004.  
  4005.  
  4006. [Array1] := ShadowDirectory\Licsetm.Txt
  4007.  
  4008. [String1] := BlankString
  4009. [StringS] := Before installing any software that is part of the LEXIS-NEXIS Millennium+ Software Collection you should carefully read the associated terms and conditions (the "Agreement"). Installing any  software from the LEXIS-NEXIS Millennium+ Software Collection indicates your acceptance of these terms and conditions. If you do not agree with them, do not install the software.
  4010.  
  4011. :PreLicense
  4012. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS License Agreement"
  4013.       Font "MS Sans Serif" 8
  4014.       BitMap @xy(8,8) BitMap 14
  4015.       LText @xy(82,20) 185 60 "[StringS]"
  4016.       Static @xy(8,140) 269 1 "" BlackRect
  4017.       PushButton @xy(180,145) 45 15 "Next >" 200
  4018.       PushButton C_Button ProcIs ExitConFirm @xy(232,145)  45 15 "Cancel" 300
  4019. EndDialogBox
  4020.  
  4021. If [Dialog_Rc] = 300
  4022.    Do ExitConfirm
  4023. EndIf
  4024.  
  4025. DialogBox  @xy(center,80) 284 165 Returns [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS License Agreement"
  4026.       Font "MS Sans Serif" 8
  4027.       BitMap @xy(8,8) BitMap 14
  4028.       Static @xy(8,140) 269 1 "" BlackRect
  4029.       PushButton @xy(90,145) 70 15 "Accept Terms" 200
  4030.       PushButton C_Button ProcIs ExitConFirm @xy(180,145)  73 15 "Do Not Accept Terms" 300
  4031.       ListBox @xy(82,9) 191 126 Uses [String1] LoadWith [Array1] Border AutoHScroll
  4032. EndDialogBox
  4033.  
  4034. If [Dialog_Rc] = 300
  4035.    Do ExitConfirm
  4036. EndIf
  4037. EndProcedure
  4038.  
  4039. ;;*******************************************************************************************
  4040. ;; HPI
  4041. ;; 600 Boulevard South, Suite 305
  4042. ;; Huntsville Al,  35802
  4043. ;;
  4044. ;; HPI is the solution provider for the installation industry.
  4045. ;;  * * * 
  4046. ;;
  4047. ;;*****************************************************************************************
  4048. ;; Init System variables
  4049. ;;
  4050. [System_StartTime] := SystemTime
  4051. [System_CMDLine]   := [CommandLine0] [CommandLine1] [CommandLine2] [CommandLine3] [CommandLine4] [CommandLine5]
  4052. [System_TempDir]   := ShadowDirectory
  4053.  
  4054. ;; Init vars from Cmdline parameters
  4055. ;;
  4056. ;; -P:Product name
  4057. ;; 
  4058.  
  4059. ;; Init Installation
  4060. ;;
  4061. Do Setup         ;; SetUp Screen Displays and Colors
  4062.  
  4063. ;; Display main dialog
  4064. ;;
  4065.  
  4066. SetMouseCursor Arrow
  4067. :MainMenu
  4068. [Number25] := RGB(0,0,0)           ;;custom foreground color
  4069. [Number26] := RGB(192,192,192)     ;;custom background color
  4070.  
  4071.    DialogBox WelcomeDialog @xy(center,80) 284 165 Returns  [Dialog_Rc] BlackOnLightGray UseHeader "LEXIS-NEXIS Electronic Materials Setup"  ;;F:\VR\SCRIPTS\INSTTYPE.DBB
  4072.       Font "MS Sans Serif" 8
  4073.       Bitmap @xy(8,7) Bitmap 14
  4074.       LText @xy(84,7)  181 50 "Thank you for selecting [Product_Name]."
  4075.       LText @xy(84,62) 191 12 "The total purchase price is $[Price] + applicable sales tax."
  4076.       LText @xy(84,77) 181 12 "To install this product you will need the following:"
  4077.       LText @xy(84,87) 181 12 " - A hard drive with [KBytes] KB of free space."
  4078.       LText @xy(84,97) 181 12 " - A valid credit card."
  4079.       LText @xy(84,107) 181 12 "   Valid Cards include: Visa, Mastercard," 
  4080.       LText @xy(84,117) 181 12 "   and American Express."
  4081.       LText @xy(84,127) 181 12 " - A connected modem (minimum 4800 baud)."
  4082.       LText @xy(8,145) 80 10 "⌐ 1996 LEXIS-NEXIS,"
  4083.       LText @xy(14,153) 130 10 "a division of Reed Elsevier Inc."
  4084.       PushButton @xy(180,145) 45 15 "Next >" 200
  4085.       PushButton @xy(135,145) 45 15 "< &Back" 100 Disabled
  4086.       PushButton C_Button ProcIs ExitConfirm @xy(232,145)  45 15 "Cancel" 300
  4087.       Static @xy(8,140) 269 1 "" BlackRect
  4088.    EndDialogBox
  4089.  
  4090. If [Dialog_Rc] = 300
  4091.    SoLong Quietly
  4092. EndIf
  4093.  
  4094. :Product_Test
  4095. do Product_License
  4096. If [Dialog_Rc] = 100
  4097.    Goto MainMenu
  4098. EndIf
  4099.  
  4100. ;; Get install directory
  4101. ;;
  4102. :InstallCheck
  4103. Do InstallCheck
  4104. If [Dialog_Rc] = 100
  4105.    Goto Product_Test
  4106. EndIf
  4107.  
  4108. ;; Get program group
  4109. ;;
  4110. :GetGroup
  4111. [GetGroup_DefaultGrp] := [Default_Program_Group]
  4112. Do GetGroup
  4113. If [Dialog_Rc] = 100
  4114.    Goto InstallCheck
  4115. EndIf
  4116.  
  4117. ;; Do user registration
  4118. ;;
  4119. :RegisterUser
  4120. Do RegUser1
  4121. If [Dialog_Rc] = 200
  4122.    Goto GetGroup
  4123. EndIf
  4124.  
  4125. :DialP
  4126. Do DialPreFix
  4127. If [Dialog_Rc] = 100
  4128.    Goto RegisterUser
  4129. EndIf
  4130.  
  4131. Do SendData
  4132. If [Dialog_Rc] = 100 .OR. [Dialog_Rc] = 200
  4133.    Goto DialP
  4134. EndIf
  4135. If [Dialog_Rc] = 300
  4136.    UpDateWindow
  4137.    Do OnLine
  4138.    If [Dialog_Rc] = 100
  4139.       Goto DialP
  4140.    EndIf
  4141. EndIf
  4142.  
  4143. :FullIns
  4144. SetMouseCursor Wait
  4145. ;; Get installation info, install directory, program group
  4146. ;; do installation checks
  4147. ;;
  4148.  
  4149. ;;[IDIR_Info]   := [InstallationDirectory]\InfoBase
  4150. ;;[IDIR_SDW]    := [InstallationDirectory]\ETM
  4151.  
  4152. Do FullInstall
  4153.  
  4154. ;; Find Views31 exe file
  4155. ;;
  4156. :FindViews31
  4157. Do FindViews31
  4158.  
  4159. ;; Install Visual Release Icons
  4160. Do IIcons
  4161. ClearScreen
  4162.  
  4163. ;; Modify LNAME.Ini file info
  4164. ;;
  4165. Do ModIni
  4166.  
  4167. ClearScreen
  4168. HideBitMap 13
  4169.  
  4170.  
  4171. SetMouseCursor Arrow
  4172. ;; Installation complete, display exit screen
  4173. ;;
  4174. Do ByeBye
  4175.  
  4176. EndScript
  4177.  
  4178.